Za pomocą arkusza właściwości drukowania

[To wstępne dokumentacji oraz z zastrzeżeniem zmiany.]

W tym temacie opisano przykładowy kod, który wyświetla arkusz właściwości drukowania użytkownika można wybrać opcji drukowania dokumentu. Przykładowy kod najpierw przydziela i inicjuje strukturę PRINTDLGEX , a następnie wywołuje funkcję PrintDlgEx , aby wyświetlić arkusz właściwości.

Przykładowy kod ustawia flagę PD_RETURNDC, członka flag struktury PRINTDLG . Powoduje to, że funkcja PrintDlgEx zwraca uchwyt kontekstu urządzenia dla wybranej drukarki członka hDC . Można użyć uchwytu takie jak w przypadku funkcji DrawText , aby renderować dane wyjściowe wysyłane do drukarki.

Na wejściu przykładowy kod ustawia pole hDevMode i hDevNames członków null. Jeśli funkcja zwraca wartość S_OK, ci Członkowie zwracają dojścia do DEVMODE i DEVNAMES struktur zawierających wejściowych użytkownika i informacje o drukarce. Te informacje można użyć do przygotowania danych wyjściowych do wysłania do wybranej drukarki.

Po zakończeniu operacji drukowania, przykładowy kod zwolnienia buforów DEVMODE i DEVNAMES i wzywa DeleteDC funkcji usunąć kontekstu urządzenia.

HRESULT DisplayPrintPropertySheet (
    HWND hWnd / / okna, jest właścicielem arkusz właściwości
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / Przydzielić struktury PRINTDLGEX.

pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
Jeżeli (! pPDX)
    Zwraca E_OUTOFMEMORY;

/ / Przydzielić Tablica struktur PRINTPAGERANGE.

pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Jeżeli (! pPageRanges)
    Zwraca E_OUTOFMEMORY;

/ / Zainicjować struktury PRINTDLGEX.

pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > hwndOwner = hWnd;
pPDX - > pole hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > flag = 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 - > wystąpienie hInstance = 0;
pPDX - > lpPrintTemplateName = NULL;
pPDX - > lpCallback = NULL;
pPDX - > nPropertyPages = 0;
pPDX - > lphPropertyPages = NULL;
pPDX - > nStartPage = START_PAGE_GENERAL;
pPDX - > dwResultAction = 0;

/ / Wywołać arkusz właściwości drukowania.

hResult = PrintDlgEx(pPDX);

Jeżeli ((hResult == wartość S_OK) & &
           pPDX - > dwResultAction == PD_RESULT_PRINT) {}

/ / Użytkownik kliknął przycisk Drukuj, aby
    / / DC i inne informacje zwrócone w / / PRINTDLGEX struktury do drukowania dokumentu

}

Jeżeli (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
Jeżeli (pPDX - > pole hDevMode! = NULL) GlobalFree (pPDX - > pole hDevMode); 
Jeżeli (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames); 

Zwraca wartość hResult;
} 

Index