如何判断当前窗口焦点是否在菜单上?包括主菜单和弹出式菜单

Sodar 2007-10-12 12:23:47
我的程序中,用了一个键盘钩子来处理按键。
但是如果有菜单弹出,包括主菜单和弹出式菜单,则暂时屏蔽键盘钩子。
但我如何知道当前是否有菜单弹出?
请教了:)
...全文
264 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
superarhow 2007-10-19
  • 打赏
  • 举报
回复
IE的收藏可能是自绘菜单。很多程序都是用的自绘菜单,特别是要加皮肤的时候。要不就反编译一下程序看看是什么类名。
superarhow 2007-10-12
  • 打赏
  • 举报
回复
菜单的窗口类名是#32768
详情可见下帖:
http://msdn.microsoft.com/msdnmag/issues/03/11/CQA/default.aspx
Sodar 2007-10-12
  • 打赏
  • 举报
回复
非常感谢楼上的兄弟
现在已经判断是否具有活动菜单

使用的主要代码如下:
//////////////////
// Note that windows are enumerated in top-down Z-order, so the
// menu window should always be the first one found.
//
static BOOL CALLBACK MyEnumProc(HWND hwnd, LPARAM lParam)
{
char buf[16];
GetClassName(hwnd,buf,sizeof(buf));
if (strcmp(buf,"#32768")==0) { // special classname for
// menus
*((HWND*)lParam) = hwnd; // found it
return FALSE;
}
return TRUE;
}

//////////////////
// Get running menu window.
//
BOOL HasRunningMenu()
{
HWND hwnd = NULL;
EnumWindows(MyEnumProc,(LPARAM)&hwnd);
return (hwnd) ? TRUE : FALSE;
}

但是有一个奇怪的问题,在IE的“收藏”菜单弹出时,用这种方式却始终检测这个菜单。
不知道为什么。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧