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