Использование окна свойств печати

[Это предварительный документации и темы для изменения].

В этом разделе описывается пример кода, отображающий окно свойств печати , так что пользователь сможет выбрать параметры для печати документа. В примере кода сначала выделяет и инициализирующего структуру PRINTDLGEX , а затем вызывает функцию PrintDlgEx для отображения окна свойств.

В образце кода устанавливает флаг PD_RETURNDC в флаги член PRINTDLG структуры. Это приводит к PrintDlgEx функция возвращает дескриптор контекста устройства для выбранного принтера в hDC -членов. Используйте ручку в функции такие как DrawText , отображения вывода отправлен на принтер.

На входе пример кода задает членов hDevMode и hDevNames в значение NULL. Если функция возвращает значение S_OK, эти члены вернуть ручки для DEVMODE и DEVNAMES, относящейся структур, содержащих введенный пользователем и сведений о принтере. Можно использовать эту информацию для подготовки вывода следует направлять на выбранном принтере.

После завершения печати операции пример кода освобождает DEVMODE и DEVNAMES, относящейся буферов и вызовы DeleteDC функции для удаления контекста устройства.

(HRESULT) DisplayPrintPropertySheet
    HWND hWnd / / окно, владеющий окна свойств
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / Выделить PRINTDLGEX структуры.

pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
Если (! pPDX)
    возвращение E_OUTOFMEMORY;

/ / Выделить массив структур PRINTPAGERANGE.

pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Если (! pPageRanges)
    возвращение E_OUTOFMEMORY;

/ / Инициализировать структуру PRINTDLGEX.

pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > hwndOwner = hWnd;
pPDX - > hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > Flags = PD_RETURNDC | PD_COLLATE;
pPDX - > Flags2 = 0;
pPDX - > ExclusionFlags = 0;
pPDX - > nPageRanges = 0;
pPDX - > nMaxPageRanges = 10;
pPDX - > lpPageRanges = pPageRanges;
pPDX - > nMinPage = 1;
pPDX - > nMaxPage = 1000;
pPDX - > nCopies = 1;
pPDX - > hInstance = 0;
pPDX - > lpPrintTemplateName = NULL;
pPDX - > lpCallback = NULL;
pPDX - > nPropertyPages = 0;
pPDX - > lphPropertyPages = NULL;
pPDX - > nStartPage = START_PAGE_GENERAL;
pPDX - > dwResultAction = 0;

/ / Вызвать окно свойств печати.

hResult = PrintDlgEx(pPDX);

Если ((hResult == S_OK) & &
           pPDX - > dwResultAction == PD_RESULT_PRINT) {}

/ / Пользователь нажал кнопку Печать, так что
    / / использовать контроллер домена и другие сведения, возвращаемые в / / PRINTDLGEX структура для печати документа

}

Если (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
Если (pPDX - > hDevMode! = NULL) GlobalFree (pPDX - > hDevMode); 
Если (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames); 

Возвращает hResult;
} 

Index