[Це попередні документації та тема змінити].
У цьому розділі описано приклад коду, що відображення аркуша властивостей друку , що користувач може вибрати параметри для друку документа. Приклади коду спочатку виділяє і ініціалізує 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 - > прапори = 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;
}