6

这是它正在做的事情

我正在尝试加载弹出的“右键单击”菜单,并使用资源文件来定义菜单项。图片显示了我右键单击时发生的情况,它显示了 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);

和资源:

IDR_POPUPMENU MENU DISCARDABLE 
BEGIN
MENUITEM "test",              IDM_TEST
MENUITEM "Close",               IDM_CLOSE
END

知道我做错了什么吗?

谢谢。

编辑:我刚刚测试过,然后单击“无文本显示”区域,它会发送正确的消息。什么可能导致它不显示文本?

4

2 回答 2

12

找到了解决方案:

HMENU hMenu = LoadMenu(NULL, MAKEINTRESOURCE(IDR_POPUPMENU));
hMenu = GetSubMenu(hMenu, 0);

和资源:

IDR_POPUPMENU MENU DISCARDABLE 
BEGIN 
   POPUP "TEST" 
      BEGIN     
        MENUITEM "Test",                IDM_TEST
        MENUITEM "Close",               IDM_CLOSE
      END
END

只需使用开始子菜单启动资源条目,TEST 不显示,只有其菜单项显示。

于 2013-09-04T01:39:03.987 回答
5

您的菜单资源不正确。它必须是一个popupmenu. 例如:

IDR_MENU_TRAY MENU
BEGIN
    POPUP "ContextMenu"
    BEGIN
        MENUITEM "ShowWindow",                  ID_POPUP_SHOWWINDOW
        MENUITEM "Exit",                        ID_POPUP_EXIT
    END
END

TrackPopupMenu第一个参数是与现有菜单项关联的子菜单的句柄。您可以在此处查看示例:http: //msdn.microsoft.com/EN-US/library/ms647558 (v=VS.85,d=hv.2).aspx

于 2013-09-04T01:45:10.070 回答