נושא זה מתאר דוגמה של קוד מציגה תיבת דו-שיח הגדרת עמוד כך המשתמש יכול לבחור את התכונות של הדף המודפס, כגון סוג הנייר, מקור הנייר, כיוון הדף ושולי עמוד. הקוד לדוגמה תחילה אתחול מבנה PAGESETUPDLG , ולאחר מכן קורא את הפונקציה PageSetupDlg כדי להציג את תיבת הדו-שיח.
דוגמה זו מגדירה את דגל PSD_MARGINS חבר דגלים ומשתמש חבר rtMargin כדי לציין את ערכי השוליים הראשונית. היא קובעת את הדגל PSD_INTHOUSANDTHSOFINCHES כדי להבטיח תיבת הדו-שיח מבטא השוליים למידות thousandths אינץ.
הקלט, הקוד לדוגמה מגדיר את החברים hDevMode ו- hDevNames ל- NULL. אם הפונקציה מחזירה TRUE, הפונקציה משתמשת חברים אלה כדי להחזיר את נקודות האחיזה DEVMODE ו DEVNAMES מבני המכיל של קלט המשתמש ומידע אודות המדפסת. באפשרותך להשתמש במידע זה כדי להכין את הפלט להישלח אל המדפסת שנבחרה.
הדוגמה גם מאפשר שגרה הוו PagePaintHook להתאים אישית את הציור של תוכן עמוד דוגמה.
PAGESETUPDLG psd; / / מבנה תיבת דו-שיח נפוצות
HWND hwnd; / / חלון בעלים
/ / אתחול PAGESETUPDLG
ZeroMemory (כח; psd, sizeof(PAGESETUPDLG));
psd.lStructSize = sizeof(PAGESETUPDLG);
psd.hwndOwner = hwnd;
psd.hDevMode = NULL; / / אל תשכח חינם או לאחסן hDevMode.
psd.hDevNames = NULL; / / אל תשכח חינם או לאחסן
hDevNames.
psd.דגלים = PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK;
psd.rtMargin.top = 1000;
psd.rtMargin.left = 1250;
psd.rtMargin.right = 1250;
psd.rtMargin.bottom = 1000;
psd.lpfnPagePaintHook = PaintHook;
אם (PageSetupDlg(&psd) = = TRUE) {
/ בדיקה נייר גודל השוליים וערכי כאן
}
הדוגמה הבאה מציגה שגרה הוו PagePaintHook לדוגמה המושך את המלבן השוליים באזור עמוד דוגמה:
PaintHook BOOL להתקשרות חזרה (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {LPRECT lprc;
COLORREF crMargRect;
HDC hdc, hdcOld;
מתג (uMsg) {/ / ציור המלבן השוליים.
מקרה WM_PSD_MARGINRECT: hdc = wParam (HDC);
lprc = lParam (LPRECT);
/ / לקבל את צבע הסימון של המערכת.
crMargRect = GetSysColor(COLOR_HIGHLIGHT);
/ / הרשמה עט קו-נקודה של צבע הסימון של המערכת, / / בחר אותו לתוך ה-DC של עמוד דוגמה.
hdcOld = SelectObject (hdc, CreatePen (PS_DASHDOT), הספרה 5, crMargRect);
/ / לצייר את המלבן השוליים.
מלבן (hdc, lprc-gt; שמאלה, lprc - > למעלה, lprc - > לימין, lprc - > התחתון);
/ / שחזור העט הקודם על ה-DC.
SelectObject (hdc, hdcOld);
החזרת TRUE;
ברירת מחדל: להחזיר שקר;
} מחזירה אמת;
}