การตั้งค่าหน้าที่

หัวข้อนี้อธิบายตัวอย่างรหัสที่แสดงกล่องโต้ตอบตั้งค่าหน้ากระดาษเพื่อให้ผู้ใช้สามารถเลือกใช้แอตทริบิวต์ของหน้าที่พิมพ์ เช่นกระดาษชนิด แหล่งกระดาษ แนวหน้า และระยะขอบของหน้า ตัวอย่างรหัสแรก เริ่มต้นโครงสร้างแบบPAGESETUPDLGและเรียกใช้ฟังก์ชันPageSetupDlgเพื่อแสดงกล่องโต้ตอบแล้ว.

ตัวอย่างนี้ตั้งค่าสถานะ PSD_MARGINS ในสถานะสมาชิก และสมาชิกrtMarginใช้เพื่อระบุค่าเริ่มต้นระยะขอบ มันตั้งค่าสถานะ PSD_INTHOUSANDTHSOFINCHES เพื่อให้แน่ใจว่า กล่องโต้ตอบแสดงขนาดของระยะขอบใน thousandths ของนิ้ว.

ในการป้อนข้อมูล ตัวอย่างรหัสกำหนดสมาชิกhDevModeและhDevNamesเป็น NULL ถ้าฟังก์ชันจะส่งกลับค่า TRUE ฟังก์ชันใช้สมาชิกเหล่านี้เพื่อส่งกลับหมายเลขอ้างอิง DEVMODEและDEVNAMESโครงสร้างที่ประกอบด้วยผู้ใช้ของการป้อนข้อมูลและข้อมูลเกี่ยวกับเครื่องพิมพ์ คุณสามารถใช้ข้อมูลนี้เพื่อจัดเตรียมผลลัพธ์ถูกส่งไปยังเครื่องพิมพ์ที่เลือก.

ตัวอย่างยังช่วยให้ขั้นตอนของ hook 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) {
    / / ตรวจสอบกระดาษขนาดและระยะขอบค่าต่อไปนี้
} 

ตัวอย่างต่อไปนี้แสดงขั้นตอนของ hook PagePaintHookเป็นตัวอย่างที่วาดสี่เหลี่ยมขอบในพื้นที่หน้าตัวอย่าง:

ติดต่อกลับ BOOL PaintHook (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 - > ล่าง); 
 
            / / Restore ปากกาก่อนหน้าเพื่อ DC 
            SelectObject (hdc, hdcOld); 
            ส่งกลับ TRUE 
 
        เริ่มต้น: ส่งกลับ FALSE 
    } กลับ TRUE 
} 

 

Index