สร้างเมนูทางลัดที่คุณลักษณะของแบบอักษร

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

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

PopupMenu เมนูเริ่มผุด "Dummy Popup" เริ่มผุด "แบบอักษร" เริ่ม MENUITEM "Courier", IDM_FONT_COURIER MENUITEM "โรมันครั้ง" IDM_FONT_TMSRMN MENUITEM "สวิตเซอร์แลนด์" IDM_FONT_SWISS MENUITEM "Helvetica", IDM_FONT_HELV MENUITEM "ภาษาอังกฤษเก่า" IDM_FONT_OLDENG สิ้นสุด POPUP "ขนาด" เริ่ม MENUITEM "7", IDM_SIZE_7 MENUITEM "8", IDM_SIZE_8 MENUITEM "9", IDM_SIZE_9 MENUITEM "10", IDM_SIZE_10 MENUITEM "11", IDM_SIZE_11 MENUITEM "12", IDM_SIZE_12 MENUITEM "14", IDM_SIZE_14 END POPUP "Styles" เริ่ม MENUITEM "ตัวหนา" IDM_STYLE_BOLD MENUITEM "ตัวเอียง" IDM_STYLE_ITALIC MENUITEM "ฆ่าออก" IDM_STYLE_SO MENUITEM "ตัวยก" IDM_STYLE_SUPER MENUITEM "ตัวห้อย" IDM_STYLE_SUB สิ้นสุดท้ายสิ้นสุด 

 

ตัวอย่างต่อไปนี้ช่วยให้กระบวนการของหน้าต่างและการสนับสนุนฟังก์ชันที่ใช้ในการสร้าง และแสดงเมนูทางลัด.

 LRESULT APIENTRY MenuWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {RECT rc    / / ไคลเอนต์พื้นที่จุด pt   / / ตำแหน่งที่ตั้งของเมาส์คลิกสลับไป (uMsg) {กรณี WM_LBUTTONDOWN: / / รับ bounding สี่เหลี่ยมของพื้นที่ที่ไคลเอ็นต์ 
 
            GetClientRect (hwnd แอมป์ (LPRECT) rc); 
 
            / / รับพิกัดไคลเอ็นต์สำหรับคลิกที่เมาส์  
 
            pt.x = GET_X_LPARAM(lParam) 
            pt.y = GET_Y_LPARAM(lParam) 
 
            / / ถ้าคลิกที่เมาส์เบียนภายในไคลเอนต์ / / พื้นที่ ดำเนินการฟังก์ชันกำหนดโดยโปรแกรมประยุกต์ / / ที่แสดงเมนูทางลัด 
 
            ถ้า (PtInRect((LPRECT) & rc, pt)) HandlePopupMenu (hwnd, pt); 
            break 
        / / ทำการประมวลผลข้อความในหน้าต่างอื่น ๆ  
 
        เริ่มต้น: กลับ DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } ส่งกลับค่า NULL 
} VOID APIENTRY HandlePopupMenu(HWND hwnd, POINT pt) {HMENU hmenu            / / เมนูแม่ HMENU hmenuTrackPopup  / / เมนูลัด / / โหลดเมนูแบบประกอบด้วยเมนูทางลัดจาก / / ทรัพยากรของโปรแกรมประยุกต์ 
 
    hmenu = LoadMenu (hinst, "PopupMenu"); 
    ถ้า (hmenu == NULL) กลับ 
 
    / / ขอเมนูทางลัดที่แรกในแบบเมนู นี่คือการ / / แสดงเมนูที่ TrackPopupMenu 
 
    hmenuTrackPopup = GetSubMenu (hmenu, 0); 
 
    / / TrackPopup ใช้หน้าจอพิกัด ดังนั้น แปลง / / พิกัดของเมาส์คลิกเพื่อพิกัดของหน้าจอ 
 
    ClientToScreen (hwnd, (LPPOINT) & pt); 
 
    / / วาด และติดตามเมนูทางลัด  
 
    TrackPopupMenu (hmenuTrackPopup, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL); 
 
    / / ทำลายเมนู 
 
    DestroyMenu(hmenu) 
} 

 

Index