我有一个用来进行WIn 32编程的遗留代码。
在这里,有一个托盘图标,当右键单击时会启动一个菜单。
但是,即使在其焦点区域之外单击,菜单仍然存在。
如何在鼠标单击其他位置时关闭菜单?
像Qt这样的框架可以很好地管理它。我是否必须跟踪鼠标指针,捕捉点击并查看它是否落在菜单区域之外?
代码是用传统的C编写的,没有面向对象的概念是used..so的,我不能在这里覆盖某些东西。
敬请指教,谢谢。
发布于 2013-03-19 16:30:52
阅读文档底部有关TrackPopupMenu函数的注释:http://msdn.microsoft.com/en-us/library/windows/desktop/ms648002(v=vs.85).aspx
具体地说:
要显示通知图标的上下文菜单,在应用程序调用TrackPopupMenu或TrackPopupMenuEx之前,当前窗口必须是前台窗口。否则,当用户在菜单或创建该菜单的窗口(如果可见)之外单击时,该菜单不会消失。如果当前窗口是子窗口,则必须将(顶级)父窗口设置为前景窗口。
https://stackoverflow.com/questions/15494591
复制相似问题