За допомогою вікна властивостей друку

[Це попередні документації та тема змінити].

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

Index