ข้อความWM_CONTEXTMENUจะถูกสร้างขึ้นเมื่อกระบวนงานหน้าต่างของโปรแกรมประยุกต์ส่งผ่านข้อความWM_RBUTTONUPหรือWM_NCRBUTTONUPไปยังฟังก์ชันDefWindowProc โปรแกรมประยุกต์ที่สามารถประมวลผลข้อความนี้จะแสดงเมนูทางลัดที่เหมาะสมกับเฉพาะบางส่วนของหน้าจอ ถ้าโปรแกรมประยุกต์ไม่ได้แสดงเมนูทางลัด มันควรส่งข้อความไปยังDefWindowProcสำหรับการเริ่มต้นจัดการ.
ต่อไปนี้คือ ตัวอย่างของ WM_CONTEXTMENU ข้อความประมวลมันอาจปรากฏขึ้นในขั้นตอนของหน้าต่างของโปรแกรมประยุกต์ ในใบ สั่งต่ำ และสูงลำดับints ของพารามิเตอร์lParamระบุพิกัดที่หน้าจอของเมาส์เมื่อปุ่มเมาส์ด้านขวาคือวันที่ออก (โปรดสังเกตว่า พิกัดเหล่านี้สามารถนำค่าลบในระบบกับจอภาพหลายจอ) การกำหนดโปรแกรมประยุกต์ OnContextMenu ฟังก์ชันกลับ TRUE ถ้ามันแสดงเมนูบริบท หรือค่า FALSE ถ้ายังไม่เปิด.
กรณี WM_CONTEXTMENU: if (OnContextMenu (hwnd, GET_X_LPARAM(lParam)
GET_Y_LPARAM(lParam))) กลับ DefWindowProc (hwnd, uMsg, wParam, lParam);
แบ่ง
ต่อไปนี้โปรแกรมประยุกต์กำหนด OnContextMenu ฟังก์ชันจะแสดงเมนูทางลัดหากตำแหน่งเมาส์ที่ระบุอยู่ภายในพื้นที่ของไคลเอ็นต์ของหน้าต่าง ฟังก์ชันที่ซับซ้อนอาจแสดงหลายต่างเมนู ทั้งนี้ขึ้นอยู่กับส่วนใดของไคลเอนต์ที่ระบุพื้นที่หนึ่ง เมื่อต้องการแสดงเมนูทางลัดจริง ตัวอย่างนี้เรียกโปรแกรมประยุกต์กำหนดฟังก์ชันการเรียกว่า DisplayContextMenu สำหรับคำอธิบายของฟังก์ชันนี้ ดูการแสดงเมนูทางลัด.
BOOL WINAPI OnContextMenu(HWND hwnd, int x, int y) {RECT rc / / ไคลเอนต์พื้นที่ของหน้าต่างจุด pt = {x, y }; / / ตำแหน่งที่ตั้งของเมาส์คลิก / / รับ bounding สี่เหลี่ยมของพื้นที่ที่ไคลเอ็นต์
GetClientRect (hwnd แอมป์ rc);
/ / แปลงตำแหน่งเมาส์เป็นพิกัดของไคลเอ็นต์
ScreenToClient (hwnd, & pt);
/ / ถ้าตำแหน่งที่อยู่ในพื้นที่ไคลเอ็นต์ แสดงการ / / เมนูทางลัด
ถ้า (PtInRect (& rc, pt)) {ClientToScreen (hwnd, & pt);
DisplayContextMenu (hwnd, pt);
ส่งกลับ TRUE
} / / ส่งกลับ FALSE ถ้าจะแสดงเมนูไม่
ส่งกลับค่า FALSE
}