我正在尝试以编程方式创建菜单,但下面的代码无法在第二个菜单项(文件的邻居)中创建弹出菜单(在第一个文件->新建等中。一切都很好)。 当我单击“查看”时,它什么都不做,而是显示 SelectAll 命令。
HMENU menu = CreateMenu();
HMENU subMenu1 = CreatePopupMenu();
AppendMenu(subMenu1,MF_STRING,IDC_MENU_NEW,_T("New"));
AppendMenu(subMenu1,MF_STRING,IDC_MENU_EXIT,_T("Exit"));
AppendMenu(menu,MF_POPUP,(UINT_PTR)subMenu1,_T("File"));
SetMenu(dlg,menu);
HMENU menu2 = CreateMenu();
HMENU subMenu2 = CreatePopupMenu();
AppendMenu(menu,MF_INSERT,(UINT_PTR)menu2,_T("View"));
AppendMenu(subMenu2,MF_STRING,IDC_MENU_EXIT2,_T("Select All"));
AppendMenu(menu2,MF_POPUP,(UINT_PTR)subMenu2,_T("View"));
我做错了什么?你能指出我在哪里可以找到信息吗?
最佳答案
我相信你的错误是在这行代码上
AppendMenu(menu,MF_INSERT,(UINT_PTR)menu2,_T("View"));
MF_INSERT 不是 AppendMenu 的有效标志,实际上映射到 MF_ENABLED。在这种情况下,我相信您想使用 MF_POPUP 来插入“查看”子菜单。
MSDN 是这样描述 MF_POPUP 的:
Specifies that the menu item opens a drop-down menu or submenu. The uIDNewItem parameter specifies a handle to the drop-down menu or submenu. This flag is used to add a menu name to a menu bar, or a menu item that opens a submenu to a drop-down menu, submenu, or shortcut menu.
关于c++ - 无法创建弹出菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500093/