Utilizând foaia de proprietăți de imprimare

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

Index