c++ - 有什么简单的方法可以确定弹出菜单何时被关闭?

标签 c++ windows winapi popupmenu

我正在使用 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/

相关文章:

c++ - 防止通过指针调用成员函数

c++ - 如何捕获内存异常?

windows - 在 Windows 中设置 HADOOP_HOME 变量

Windows 终端/Powershell 智能感知

python - 看门狗兼容性 : A workaround for "CancelIoEx"

C++ 单例实现 - 静态问题

c++ - 如何构造一个可以代入子类然后泛化调用的模板类类型?

c++ - 使用winapi切换音频设备

c++ - 我正在尝试安装 gameplay 游戏引擎,但遇到错误

c++ - 没有窗口的 Win32 设备上下文