在焦点外单击鼠标时隐藏/关闭菜单

时间:2013-03-19 08:27:37

标签: winapi menu

我有遗留代码,其中完成了WIn 32编程。

在这里,有一个托盘图标,可以在右键单击时启动菜单。

但是,即使在焦点区域外单击,菜单仍会保留。

当我在其他地方点击鼠标时如何关闭菜单?

像Qt这样的框架管理得很好。我是否必须跟踪鼠标指针,捕获点击并查看它是否落在菜单区域之外?

代码在遗留C中,并且没有使用面向对象的概念。所以我不能在这里覆盖一些东西。

请告知,谢谢。

1 个答案:

答案 0 :(得分:10)

阅读TrackPopupMenu函数文档底部的备注:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648002(v=vs.85).aspx

具体做法是:

  

显示通知图标的上下文菜单,即当前窗口   必须是应用程序调用之前的前台窗口   TrackPopupMenu或TrackPopupMenuEx。否则,菜单不会   当用户点击菜单或窗口之外时,消失   创建菜单(如果可见)。如果当前窗口是孩子   在窗口中,必须将(顶级)父窗口设置为前景   窗口。