Eva*_*ake 5 c++ resources winapi menu popup

我正在尝试加载弹出"右键单击"菜单,并使用资源文件来定义菜单项.图为右键单击时发生的情况,显示2个项目的空间,这是正确的,但没有显示任何文本.
在.cpp中:
POINT pt;
pt.x = LOWORD (lParam);
pt.y = HIWORD (lParam);
ClientToScreen (hwnd, &pt);
HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDR_POPUPMENU));
TrackPopupMenu (hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
Run Code Online (Sandbox Code Playgroud)
和资源:
IDR_POPUPMENU MENU DISCARDABLE
BEGIN
MENUITEM "test", IDM_TEST
MENUITEM "Close", IDM_CLOSE
END
Run Code Online (Sandbox Code Playgroud)
我对什么不对的任何想法?
谢谢.
编辑:我刚测试,点击"没有文字显示"区域,它发送正确的消息.什么可能导致它不显示文本?
Eva*_*ake 10
找到解决方案:
HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDR_POPUPMENU));
hMenu = GetSubMenu(hMenu, 0);
Run Code Online (Sandbox Code Playgroud)
和资源:
IDR_POPUPMENU MENU DISCARDABLE
BEGIN
POPUP "TEST"
BEGIN
MENUITEM "Test", IDM_TEST
MENUITEM "Close", IDM_CLOSE
END
END
Run Code Online (Sandbox Code Playgroud)
只需要使用开始子菜单启动资源条目,TEST不显示,只显示其菜单项.
小智 5
您的菜单资源不正确.它必须是一个popupmenu.例如:
IDR_MENU_TRAY MENU
BEGIN
POPUP "ContextMenu"
BEGIN
MENUITEM "ShowWindow", ID_POPUP_SHOWWINDOW
MENUITEM "Exit", ID_POPUP_EXIT
END
END
Run Code Online (Sandbox Code Playgroud)
TrackPopupMenu第一个参数是与现有菜单项关联的子菜单的句柄.你可以在这里看到这些例子:http://msdn.microsoft.com/EN-US/library/ms647558(v = VS.85,d = hv.2).aspx