שימוש בגליון מאפיינים של הדפסה

[זהו תיעוד ראשוני וניתנים לשינוי.]

נושא זה מתאר דוגמה של קוד מציג גליון מאפיינים הדפסה כך המשתמש יכול לבחור אפשרויות הדפסה של מסמך. הקוד לדוגמה תחילה מקצה ו אתחול מבנה 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 = (LPPRINTPAGERANGE) GlobalAlloc (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) {

/ / המשתמש לוחץ על לחצן ' הדפס ', אז
    / / השתמש ה-DC ומידע אחר חזר / / PRINTDLGEX מבנה כדי להדפיס את המסמך

}

אם (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
אם (pPDX - > hDevMode! = NULL) GlobalFree (pPDX - > hDevMode); 
אם (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames); 

להחזיר hResult;
} 

Index