נושא זה מתאר דוגמה של קוד מציגה תיבת דו-שיח הדפסה כך המשתמש יכול לבחור אפשרויות הדפסה של מסמך. הקוד לדוגמה תחילה אתחול מבנה PRINTDLG , ולאחר מכן קורא את הפונקציה PrintDlg כדי להציג את תיבת הדו-שיח.
דוגמה זו מגדירה את דגל PD_RETURNDC חבר בדגלים של מבנה PRINTDLG . פעולה זו גורמת PrintDlg להחזיר את המזהה הייחודי של הקשר ההתקן עבור המדפסת שנבחרה חבר hDC . באפשרותך להשתמש נקודת האחיזה לעיבוד פלט המדפסת.
הקלט, הקוד לדוגמה מגדיר את החברים hDevMode ו- hDevNames ל- NULL. אם הפונקציה מחזירה TRUE, חברים אלה להחזיר את נקודות האחיזה DEVMODE ו DEVNAMES מבני המכיל של קלט המשתמש ומידע אודות המדפסת. באפשרותך להשתמש במידע זה כדי להכין את הפלט להישלח אל המדפסת שנבחרה.
PRINTDLG pd;
HWND hwnd;
/ / אתחול PRINTDLG
ZeroMemory (כח; pd, sizeof(PRINTDLG));
pd.lStructSize = sizeof(PRINTDLG);
pd.hwndOwner = hwnd;
pd.hDevMode = NULL; / / אל תשכח חינם או לאחסן hDevMode.
pd.hDevNames = NULL; / / אל תשכח חינם או לאחסן hDevNames.
pd.דגלים = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
pd.nCopies = 1;
pd.nFromPage = 0xFFFF;
pd.nToPage = 0xFFFF;
pd.nMinPage = 1;
pd.nMaxPage = 0xFFFF;
אם (PrintDlg(&pd) = = TRUE) {
/ / GDI קורא לעיבוד פלט.
/ / מחק בקר קבוצת מחשבים לאחר סיום.
DeleteDC(pd.hDC);
}