我有遗留代码,其中完成了WIn 32编程。
在这里,有一个托盘图标,可以在右键单击时启动菜单。
但是,即使在焦点区域外单击,菜单仍会保留。
当我在其他地方点击鼠标时如何关闭菜单?
像Qt这样的框架管理得很好。我是否必须跟踪鼠标指针,捕获点击并查看它是否落在菜单区域之外?
代码在遗留C中,并且没有使用面向对象的概念。所以我不能在这里覆盖一些东西。
请告知,谢谢。
答案 0 :(得分:10)
阅读TrackPopupMenu
函数文档底部的备注:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648002(v=vs.85).aspx
具体做法是:
显示通知图标的上下文菜单,即当前窗口 必须是应用程序调用之前的前台窗口 TrackPopupMenu或TrackPopupMenuEx。否则,菜单不会 当用户点击菜单或窗口之外时,消失 创建菜单(如果可见)。如果当前窗口是孩子 在窗口中,必须将(顶级)父窗口设置为前景 窗口。