MFC让托盘弹出菜单失去焦点自动关闭

来源:互联网 发布:华为数据库工程师待遇 编辑:程序博客网 时间:2024/06/04 19:10

       MFC 托盘弹出控制菜单后,单击其他地方或按ESC键也都不能使托盘菜单消失(一直悬挂着怪让人难受的),必须选择托盘菜单里的控制选项才能关闭菜单(好比到一家餐厅不点菜不给走呀),这是个很严重的问题,因为如果你的菜单里面只有“关闭”按钮,那是杯具中的杯具。

不过MSDN中给出了解决办法:

135788:Menus for Notification Icons Do Not Work Correctly

SYMPTOMS:When you display a context menu for a notification icon, clicking anywhere besides the menu or the window that created the menu doesn't cause the menu to disappear.

RESOLUTION:To correct the first behavior, you need to make the current window the foreground window before calling TrackPopupMenu or TrackPopupMenuEx.

修正办法就是将SetForegroundWindow()放在pSubMenu->TrackPopupMenu()前面,这样就使得当前窗口变为前置了。

 

这样当弹出菜单失去焦点之后,就会自动关闭了!其实这个所谓的设计,可害苦了程序员呀!!!