之前写了一些win32的程序,处理菜单单击都是处理WM_COMMAND消息,通过?LOWORD(wParam) 获取菜单ID,判断单击的是哪个菜单项;
还有一些其他菜单消息;
当在菜单项中移动光标或鼠标,程序会收到许多WM_MENUSELECT消息;
该消息的参数如下,
? ? LOWORD(wParam):选中项的菜单ID或弹出式菜单句柄
? ? HIWORD(wParam): 选择标志
? ? lParam: ?包含选中项的菜单句柄
? ??
选择标志可以是MF_BITMAP、MF_CHECKED、MF_DISABLED等多个标志的组合;
如果需要根据菜单的选择来改变客户区和状态栏内容,此消息很有用;
switch (message)
{
case WM_MENUSELECT:
hdc = GetDC(hwnd);
wsprintf(szBuffer, TEXT("%d"), LOWORD(wParam));
TextOut(hdc, 50, 20 + 25 * row, szBuffer, lstrlen(szBuffer));
row = row + 1;
break;
......
}
处理WM_MENUSELECT消息并输出选中的菜单ID,
当前的菜单ID定义如下,
#define IDR_MENU1 ? ? ? ? ? ? ? ? ? ? ? 101
#define ID_TEST1_TEST101 ? ? ? ? ? ? ? ?40001
#define ID_TEST1_TEST102 ? ? ? ? ? ? ? ?40002
#define ID_TEST1_TEST103 ? ? ? ? ? ? ? ?40003
? ? 有时间继续;?