[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;
}