ออกแบบกระบวนงานหน้าต่าง

ตัวอย่างต่อไปนี้แสดงโครงสร้างของกระบวนงานหน้าต่างทั่วไป ขั้นตอนในหน้าต่างใช้อาร์กิวเมนต์ข้อความในคำสั่งสลับกับแต่ละข้อความที่จัดการ โดยแยกต่างหากกรณีงบ สังเกตเห็นว่า แต่ละกรณีส่งกลับค่าเฉพาะสำหรับแต่ละข้อความ สำหรับข้อความที่จะประมวลผล ขั้นตอนในหน้าต่างเรียกฟังก์ชันDefWindowProc.

(ติดต่อกลับ MainWndProc LRESULT
    HWND hwnd, / / จัดการหน้าต่าง
    UINT uMsg, / / ข้อความที่ระบุ
    WPARAM wParam, / / ข้อความแรก พารามิเตอร์
    LPARAM lParam) / / ที่สองพารามิเตอร์ข้อความ
{สวิตช์ (uMsg) {กรณี WM_CREATE: / / เตรียมใช้งานหน้าต่างนี้ 
            ส่งกลับค่า 0 
 
        กรณี WM_PAINT: / / ระบายพื้นที่ไคลเอ็นต์ของหน้าต่าง 
            ส่งกลับค่า 0 
 
        กรณี WM_SIZE: / / การตั้งค่าขนาดและตำแหน่งของหน้าต่าง 
            ส่งกลับค่า 0 
 
        กรณี WM_DESTROY: / / ล้างข้อมูลเฉพาะหน้าต่างวัตถุ 
            ส่งกลับค่า 0 
 
        / / / / ประมวลผลข้อความอื่น ๆ 
        / / เริ่มต้น: กลับ DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } กลับ 0 
} 

 

ที่ส่งหลัง จากมีสร้างหน้าต่างของคุณ แต่ ถ้าโปรแกรมประยุกต์ตอบสนองต่อข้อความนี้ โดยการส่งกลับค่า FALSE ล้มเหลวฟังก์ชันCreateWindowEx messageis WM_NCCREATE มีส่งข้อความWM_CREATEหลังจากหน้าต่างของคุณถูกสร้างเรียบร้อยแล้ว.

มีส่งข้อความWM_DESTROYเมื่อหน้าต่างของคุณกำลังจะถูกทำลาย ฟังก์ชันDestroyWindowจะดูแล windows ย่อยใด ๆ ของหน้าต่างที่ถูกทำลายเท่านั้น มีส่งข้อความWM_NCDESTROYก่อนต่างถูกทำลาย.

น้อยสุด กระบวนงานหน้าต่างควรดำเนินการ WM_PAINTข้อความเพื่อวาดตัวเอง โดยทั่วไปแล้ว มันควรจัดการเมาส์และแป้นพิมพ์ข้อความด้วย ดูคำอธิบายของแต่ละข้อความเพื่อตรวจสอบว่า ขั้นตอนของหน้าต่างของคุณควรจัดการกับเหล่านั้น.

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

กระบวนงานกล่องโต้ตอบได้รับข้อความWM_INITDIALOGแทนของข้อความWM_CREATEและส่งผ่านข้อความที่ unprocessed ไปยังฟังก์ชันDefDlgProc มิฉะนั้น ขั้นตอนกล่องโต้ตอบจะตรงเหมือนหน้าต่างกระบวนงาน.

Index