BOOL InsertMenu ( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );
BOOL InsertMenu ( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
ส่งกลับค่า
ไม่ใช่ศูนย์ถ้าฟังก์ชันนี้จะสำเร็จ 0 อื่น?
พารามิเตอร์
nPosition
ระบุรายการเมนูที่ก่อนที่รายการเมนูใหม่จะถูกแทรก สามารถใช้พารามิเตอร์nFlagsตีnPositionด้วยวิธีการดังต่อไปนี้:
| nFlags | การตีความเนื้อความของ nPosition |
| MF_BYCOMMAND | ระบุพารามิเตอร์ให้สั่ง ID ของรายการเมนูที่มีอยู่ นี่คือค่าเริ่มต้นถ้าทั้งMF_BYCOMMANDและMF_BYPOSITIONถูกตั้งค่า? |
| MF_BYPOSITION | ระบุพารามิเตอร์ให้ตำแหน่งของรายการเมนูที่มีอยู่ รายการแรกอยู่ที่ตำแหน่ง 0 ถ้าnPosition 1 รายการเมนูใหม่จะถูกผนวกเข้าไปส่วนท้ายของเมนู? |
nFlags
ระบุวิธีการตีความnPositionและระบุข้อมูลเกี่ยวกับสถานะของรายการเมนูใหม่เมื่อมีเพิ่มลงในเมนู สำหรับรายการของค่าสถานะที่คุณอาจตั้งค่า ดูฟังก์ชันสมาชิกAppendMenu เมื่อต้องการระบุมากกว่า หนึ่งค่า ใช้ตัวดำเนินการระดับบิตของหรือการรวมเข้าด้วยกันกับธงชาติMF_BYCOMMANDหรือMF_BYPOSITION?
nIDNewItem
ระบุเป็นคำสั่ง ID ของรายการเมนูใหม่ หรือnFlagsถูกตั้งค่าเป็นMF_POPUPการจัดการเมนู (HMENU) ของเมนูแบบผุดขึ้น พารามิเตอร์nIDNewItemถูกละเว้น (ไม่จำเป็น) ถ้าnFlagsถูกตั้งค่าเป็นMF_SEPARATOR?
lpszNewItem
ระบุเนื้อหาของรายการเมนูใหม่ nFlagsสามารถใช้ตีlpszNewItemด้วยวิธีการดังต่อไปนี้:
| nFlags | การตีความเนื้อความของ lpszNewItem |
| MF_OWNERDRAW | ประกอบด้วยค่า 32 บิตมาจากโปรแกรมประยุกต์ที่โปรแกรมประยุกต์ที่สามารถใช้เพื่อรักษาข้อมูลเพิ่มเติมที่เกี่ยวข้องกับรายการเมนู ค่า 32 บิตนี้จะพร้อมใช้งานสำหรับโปรแกรมประยุกต์ในสมาชิกitemDataของโครงสร้างโดย WM_MEASUREITEMและ WM_DRAWITEMข้อความ ส่งข้อความเหล่านี้เมื่อรายการเมนูเริ่มแสดง หรือมีการเปลี่ยนแปลง? |
| MF_STRING | ประกอบด้วยตัวชี้ที่ยาวเป็นสายอักขระค่า null ที่สิ้นสุดจ้างงาน นี่คือการตีความเนื้อความที่เป็นค่าเริ่มต้น? |
| MF_SEPARATOR | พารามิเตอร์lpszNewItemจะถูกละเว้น (ไม่จำเป็น)? |
pBmp
จุดCBitmapวัตถุที่จะใช้เป็นรายการเมนู?
หมายเหตุ
แทรกรายการเมนูใหม่ที่ตำแหน่งที่ระบุโดยnPositionและย้ายรายการอื่น ๆ ลงในเมนู โปรแกรมประยุกต์ที่สามารถระบุสถานะของรายการเมนู โดยการกำหนดค่าในnFlags?
เมื่อใดก็ ตามเมนูที่อยู่ในหน้าต่างมีการเปลี่ยนแปลง (หรือไม่มีแสดงหน้าต่าง), แอพลิเคชันควรโทรศัพท์หมายเลขCWnd::DrawMenuBar?
เมื่อnIDNewItemระบุเมนูแบบผุดขึ้น มันกลายเป็นส่วนหนึ่งของเมนูที่จะถูกแทรก ถ้าเมนูที่ถูกทำลาย เมนู'แทรก'จะยังถูกทำลาย เมนูแทรกจะถูกเอาออกจากวัตถุCMenuในการหลีกเลี่ยงความขัดแย้ง?
ถ้าเปิดใช้งานการขยายหน้าต่างลูกอินเทอร์เฟซ (MDI) เอกสารหลายและแทรกแอพลิเคชันมีเมนูแบบผุดขึ้นลงในเมนูของโปรแกรมประยุกต์ MDI ด้วยการเรียกฟังก์ชันนี้ และการระบุค่าสถานะMF_BYPOSITIONเมนูแทรกหนึ่งตำแหน่งซ้ายไกลกว่าที่คาดไว้ นี้เกิดขึ้นเนื่องจากเมนูตัวควบคุมของหน้าต่างลูก MDI ใช้งานอยู่ถูกแทรกลงในตำแหน่งของแถบเมนูของ MDI กรอบหน้าต่างแรก การวางตำแหน่งเมนูถูกต้อง แอพลิเคชันต้องเพิ่ม 1 ค่าตำแหน่งที่มิฉะนั้นจะถูกใช้ โปรแกรมประยุกต์ที่สามารถใช้ข้อความWM_MDIGETACTIVEเพื่อตรวจสอบว่า หน้าต่างใช้งานอยู่ในขณะนี้เด็กจะขยายใหญ่สุด?
ภาพรวม CMenu |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)
ดูเพิ่มเติมnbspCMenu::AppendMenu, CWnd::DrawMenuBar, CMenu::SetMenuItemBitmaps, CMenu::Detach, :: InsertMenu(&N)