我想通过使用SendMessage()到我的状态栏,当我的鼠标光标在我的菜单中的项目上时显示信息。如何获取当前菜单项ID?我想他们使用与我在菜单编辑器中显示的Visual Studio相同的ID。
我在msdn上找到了这些,但似乎没有一个能满足我的需求:
WM_COMMAND
WM_CONTEXTMENU
WM_ENTERMENULOOP
WM_EXITMENULOOP
WM_GETTITLEBARINFOEX
WM_MENUCOMMAND
WM_MENUDRAG
WM_MENUGETOBJECT
WM_MENURBUTTONUP
WM_NEXTMENU
WM_UNINITMENUPOPUP
答案 0 :(得分:0)
您是否尝试过使用..
GetFocus();
我认为如果我没记错的话,会返回指向控件的指针。
答案 1 :(得分:0)
当用户在菜单中移动时,您会收到WM_MENUSELECT条消息。 LOWORD(lParam)
将是菜单项的ID,除非当前正在选择的是弹出窗口而不是项目。
所以你的代码看起来像这样
case WM_MENUSELECT
{
HMENU hmenu = (HMENU) lParam;
UINT idItem = (UINT) LOWORD(wParam);
UINT flags = (UINT) HIWORD(wParam);
if (flags & MF_POPUP)
{
// idItem is actually a popup index
HMENU hSubMenu = GetSubMenu(hmenu, idItem);
idItem = 0; // assign an id to the menu, or just set to 0 for no output
}
// show menu info on status bar for idItem
SendMessage(hwndStatbar, ..., idItem, ...);
}
答案 2 :(得分:0)
(也许不是一个完整的答案,但是)你不能在资源的STRINGTABLE部分使用use字符串吗?
例如,您的菜单ID:
MENUITEM "Your Menu Item...", IDM_YOUR_MENU_ITEM
STRINGTABLE中的
STRINGTABLE
BEGIN
IDM_ALL_SURFACE_PROFILE_FEATURES "Message1\nMessage2"
END
如果记忆能很好,那么字符串的第一部分就是状态栏中显示的文字。
最大