5

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

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

但是,即使在其焦点区域之外单击,菜单仍然存在。

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

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

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

请指教,谢谢。

4

1 回答 1

10

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

具体来说:

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

于 2013-03-19T08:30:51.700 回答