c++ - 无法创建弹出菜单

标签 c++ winapi

我正在尝试以编程方式创建菜单,但下面的代码无法在第二个菜单项(文件的邻居)中创建弹出菜单(在第一个文件->新建等中。一切都很好)。 当我单击“查看”时,它什么都不做,而是显示 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/

相关文章:

windows - 如何在 Win32 应用程序中检测 Windows 10 亮/暗模式?

delphi - 注册自定义控件的访问 key

c++ - Box2d SetLinearVelocity 奇怪的问题

c++ - 与 Visual Studio 不同版本的链接错误

c++ - 读取进程的进程内存不会返回所有内容

c - Win32 : Impossible to use iocp with stdin handle

c++ - PIC MICRO : How to convert a float in separate characters array?

c++ - DLL中的Rtaudio使程序无响应

c++ - 在C++中,是否可以定义一个类用作: SomeObj obj1; SomeObj<4> obj2;

c++ - 如何在最小化窗口后最大化它