我正在使用 TrackPopupMenu 显示一个弹出菜单,并想知道何时通过在其外部单击将其关闭。我查看了所有菜单功能,但没有发现任何在这方面有用的东西。 Spy++ 告诉我在这种情况下没有发送窗口消息。
那么,有没有不用安装鼠标钩子(Hook)的简单方法呢?谢谢!
最佳答案
[编辑]
这个更好。
如果在 uFlags 参数中指定 TPM_RETURNCMD,则返回值是用户选择的项目的菜单项标识符。如果用户在没有进行选择的情况下取消菜单,或者发生错误,则返回值为零。
菜单循环在::TrackPopupMenu() 返回时结束 :) 如果选择了一个菜单项,则将 HWND 作为第 6 个参数传递的窗口将收到带有所选项目 ID 的 WM_COMMAND 消息。您可以在::TrackPopupMenu() 返回后通过::PeekMessage() 查看 WM_COMMAND 是否在队列中。
如果你想在::TrackPopupMenu() 中得到通知,你可以处理 WM_EXITMENULOOP。
关于c++ - 有什么简单的方法可以确定弹出菜单何时被关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2460953/