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

use*_*240 3 winapi menu

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

在这里,有一个托盘图标,当右键单击时会启动菜单.

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

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

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

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

请指教,谢谢.

Jon*_*ter 10

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

特别:

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

  • 你必须有一个窗口,否则你在哪里得到你的托盘图标被点击的消息? (2认同)