有没有简单的方法来确定弹出菜单何时被关闭?
我正在使用 TrackPopupMenu 显示弹出菜单,并想知道何时通过单击其外部来关闭它。我浏览了所有菜单功能,但没有发现任何在这方面有用的东西。 Spy++ 告诉我在这种情况下不会发送任何窗口消息。
那么,有没有一种不用安装鼠标钩就能简单实现的方法呢?谢谢!
I'm displaying a popup menu using TrackPopupMenu and would like to know when it is dismissed via clicking outside of it. I've looked through all the menu functions but didn't find anything useful in this regard. Spy++ told me that no window message is sent in this case.
So, is there an easy way to do it without installing a mouse hook? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
[编辑]
这更好。
如果在 uFlags 参数中指定 TPM_RETURNCMD,则返回值是用户所选项目的菜单项标识符。如果用户在没有做出选择的情况下取消菜单,或者发生错误,则返回值为零。
当 ::TrackPopupMenu() 返回时菜单循环结束:)
如果选择了菜单项,则将 HWND 作为第 6 个参数传递的窗口将收到带有所选项目 ID 的 WM_COMMAND 消息。您可以在 ::TrackPopupMenu() 返回后 ::PeekMessage() 查看 WM_COMMAND 是否在队列中。
如果您想在 ::TrackPopupMenu() 中收到通知,您可以处理 WM_EXITMENULOOP。
[edit]
This is better.
If you specify TPM_RETURNCMD in the uFlags parameter, the return value is the menu-item identifier of the item that the user selected. If the user cancels the menu without making a selection, or if an error occurs, then the return value is zero.
The menu loop is ended when ::TrackPopupMenu() returns :)
If a menu item was selected the window having the HWND passed as 6th parameter will receive a WM_COMMAND message with the ID of the selected item. You can probably ::PeekMessage() after ::TrackPopupMenu() returns to see if WM_COMMAND is in the queue.
If you want to be notified while in ::TrackPopupMenu() you can handle WM_EXITMENULOOP.