C Win32快捷菜单不支持';在任何情况下都不能发送消息

C Win32快捷菜单不支持';在任何情况下都不能发送消息,c,winapi,C,Winapi,我有一个显示的快捷菜单,但无论我用它做什么,它都不会发送任何消息。 我在高级鼠标挂钩中尝试了它,在WM_上下文菜单中尝试了它窗口过程消息无论我做什么,回报什么,它都不会发送消息。 菜单在应用程序启动时创建,在应用程序关闭时销毁 以下是菜单创建代码: DoomRatGUI_SlavesListItemMenu = CreatePopupMenu(); DoomRatGUI_SlavesListItemMenuInfo = calloc(1, sizeof(MENUINFO)); DoomRatGU

我有一个显示的快捷菜单,但无论我用它做什么,它都不会发送任何消息。

我在高级鼠标挂钩中尝试了它,在WM_上下文菜单中尝试了它窗口过程消息无论我做什么,回报什么,它都不会发送消息。

菜单在应用程序启动时创建,在应用程序关闭时销毁

以下是菜单创建代码:

DoomRatGUI_SlavesListItemMenu = CreatePopupMenu();
DoomRatGUI_SlavesListItemMenuInfo = calloc(1, sizeof(MENUINFO));
DoomRatGUI_SlavesListItemMenuInfo->fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS;
DoomRatGUI_SlavesListItemMenuInfo->cbSize = sizeof(MENUINFO);
DoomRatGUI_SlavesListItemMenuInfo->dwStyle = MNS_NOCHECK | MNS_NOTIFYBYPOS;
//DoomRatGUI_SlavesListItemMenuInfo->hbrBack = ResourcesManager_GetDarkGreyBrush();
SetMenuInfo(DoomRatGUI_SlavesListItemMenu, DoomRatGUI_SlavesListItemMenuInfo);
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1001, L"Actions");
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1002, L"Quick Info");
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1003, L"Quick Stop");
AppendMenuW(DoomRatGUI_SlavesListItemMenu, MF_STRING, 1004, L"Quick Restart");
我使用代码行显示菜单:

TrackPopupMenu(DoomRatGUI_SlavesListItemMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_LEFTBUTTON | TPM_NOANIMATION, LOWORD(Arg_lParam), HIWORD(Arg_lParam), 0, DoomRatGUI_WindowHandle, NULL);
如果你知道一个解决方案,告诉我我必须做什么,因为我已经尝试了一切,比如。。。这段代码应该放在哪里,谢谢


PS:DoomRAT不是恶意的,它是一个很小的2D游戏我正在学习。

TPM\u RETURNCMD标志导致
TrackPopupMenu
返回所选的菜单项id作为函数返回值,而不是发送
WM\u命令
消息


另外,像这样分配
MENUINFO
是不必要的,它是一个小结构,只需使用堆栈。

标记
TPM\u RETURNCMD
会导致
TrackPopupMenu
返回所选菜单项id作为函数返回值,而不是发送
WM\u命令
消息


另外,像这样分配
MENUINFO
是不必要的,它是一个小结构,只需使用堆栈即可。

您是否查阅了TrackPopupMenu()的MSDN文档?这可能比写这个问题要快。这是一个模态的东西-它内部有自己的消息处理程序。你有没有查阅过TrackPopupMenu()的MSDN文档?这可能比写这个问题要快。这是一个模态的东西-它在内部有自己的消息处理程序。我很确定我尝试过删除TMP_RETURNCMD,但它以前不起作用,但现在起作用了!谢谢我很确定我试过删除TMP_RETURNCMD,但它以前不起作用,但现在起作用了!谢谢