我想添加一個菜單項到我的主菜單,然後在運行時用項目填充它。我將如何做到這一點?除了添加項目,我怎麼會有他們的消息映射條目,因爲我不知道ID?使用mfc的動態菜單
9
A
回答
15
您可以動態創建一個CMenu
對象是這樣的:
CMenu *menu = new CMenu;
menu->CreatePopupMenu();
// Add items to the menu
menu->AppendMenu(MF_STRING, menuItemID, "Text");
...
然後加入這個子菜單到主菜單:
wnd->GetMenu()->AppendMenu(MF_POPUP, (UINT_PTR)menu->m_hMenu, "Menu Name");
至於消息映射,假設所有的菜單項ID在一定範圍內,您可以使用ON_COMMAND_RANGE
將整個範圍映射到單個功能。該函數將接收ID作爲參數,並且在該函數內,可以根據ID執行不同的操作。
8
define the menu's using #define
#define ID_SHOW 2002
#define ID_HIDE 2004
//create a menu object for main menu
CMenu *menu = new CMenu();
menu->CreateMenu();
//another menu object for submenu
CMenu *subMenu = new CMenu();
subMenu->CreatePopupMenu();
subMenu->AppendMenu(MF_STRING, ID_HIDE, _T("four"));
subMenu->AppendMenu(MF_STRING, ID_SHOW, _T("three"));
//append submenu to menu
menu->AppendMenu(MF_POPUP|MF_STRING, (UINT)subMenu->m_hMenu, _T("Advanced"));
SetMenu(menu);
0
CMenu menuPopup;
menuPopup.LoadMenu(IDR_CNTXT_PLAN);
subMenu.CreatePopupMenu();
subMenu.AppendMenu(MF_STRING, MENU1,"Menu1");
subMenu.AppendMenu(MF_STRING, MENU2,"Menu2");
CMenu* pMenu = menuPopup.GetSubMenu(0);
pMenu->InsertMenu(0,MF_BYPOSITION|MF_POPUP,(UINT)subMenu.m_hMenu,"Layers");
menuPopup.GetSubMenu(0)->InsertMenu(1,MF_BYPOSITION|MF_SEPARATOR,0,"");
menuPopup.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
相關問題
- 1. MFC中的動態菜單
- 2. 如何使用MFC featurepack中的圖像動態添加菜單項
- 3. 使用催化劑的動態菜單
- 4. 動態菜單,
- 5. 如何在mfc中動態添加子菜單
- 6. 如何動態地在MFC SDI上繪製自定義菜單
- 7. 刪除MFC中的菜單
- 8. 使用動態菜單的數據MF側面菜單問題
- 9. 笨:動態菜單使用錨
- 10. 使用ui.bootstrap.contextMenu動態上下文菜單
- 11. 動態選項菜單使用invalidateOptionsMenu()
- 12. 使用webservices動態菜單生成
- 13. 動態html菜單使用php
- 14. 使用jQuery創建動態菜單
- 15. 動態菜單使用引導
- 16. 動態菜單使用HTML,CSS和JavaScript
- 17. 如何使用jquery動態加載菜單欄和子菜單
- 18. 滾動菜單使用菜單項的
- 19. 動態菜單,conditionalPanel
- 20. ASP.NET動態菜單
- 21. 動態菜單,笨
- 22. 動態Java.swing菜單
- 23. 動態菜單jquery
- 24. 動態HTML菜單?
- 25. PHP動態菜單
- 26. 動態UIPickerView菜單
- 27. PHP「動態」菜單
- 28. 動態雙菜單
- 29. 動態菜單 - MVC
- 30. 動態GWT菜單