[Это предварительный документации и темы для изменения].
В этом разделе описывается пример кода, отображающий окно свойств печати , так что пользователь сможет выбрать параметры для печати документа. В примере кода сначала выделяет и инициализирующего структуру 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;
}