CMenu::InsertMenu

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)

Index