[Acest lucru este documenta?ia preliminare și subiect pentru a schimba].
Acest subiect descrie mostre de cod, care afișează o foaie de proprietăți de Imprimare , astfel încât utilizatorul poate selecta opțiuni pentru imprimarea unui document. Mostre de cod prima alocă și inițializează o structură PRINTDLGEX , apoi apelează funcția PrintDlgEx pentru a afișa foaia de proprietăți.
Mostre de cod stabilește pavilion PD_RETURNDC membru steaguri de structura PRINTDLG . Acest lucru provoacă funcția PrintDlgEx pentru a reveni un ghidaj de context de dispozitiv pentru imprimanta selectată în membre hDC . Utilizați ghidajul în funcții cum ar fi DrawText , care face ieșire trimis la imprimantă.
La intrare, mostre de cod seturi membrii hDevMode și hDevNames la NULL. Dacă funcția întoarce S_OK, ace?ti membri reveni mânerele de la mod dezvoltare și DEVNAMES structuri care con?in utilizator de intrare ?i informa?ii despre imprimantă. Utilizați aceste informații pentru a pregăti de ieșire pentru a fi trimisă la imprimanta selectată.
După opera?ia de imprimare a fost finalizat, mostre de cod eliberează tampoane mod dezvoltare și DEVNAMES și apeluri DeleteDC funcție pentru a șterge cadrul dispozitiv.
(DisplayPrintPropertySheet) HRESULT
HWND hWnd / / fereastra care deține foaia de proprietăți
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;
/ / Aloca structura PRINTDLGEX.
pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
Dacă (! pPDX)
return E_OUTOFMEMORY;
/ / Aloca o matrice de structuri PRINTPAGERANGE.
pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Dacă (! pPageRanges)
return E_OUTOFMEMORY;
/ / Ini?ializat structura PRINTDLGEX.
pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > hwndOwner = hWnd;
pPDX - > hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > steaguri = 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;
/ / Invoca foaia de proprietăți de imprimare.
hResult = PrintDlgEx(pPDX);
Dacă ((hResult == S_OK) & &
pPDX - > dwResultAction == PD_RESULT_PRINT) {}
/ / Utilizator face clic pe butonul Imprimare, atât
/ / DC și alte informații s-a întors în / / PRINTDLGEX structura pentru a imprima documentul
}
Dacă (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
Dacă (pPDX - > hDevMode! = NULL) GlobalFree (pPDX - > hDevMode);
Dacă (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames);
return hResult;
}