我有VC++ MFC应用程序,我需要在CMainFrame菜单栏上显示上下文菜单。我在CMainFrame中增加了一个处理程序WM_CONTEXTMENU,我能够在工具栏中(也窗口标题)上,即可显示我的上下文菜单,但是手柄,当我在菜单栏在MFC应用程序主机上显示上下文菜单菜单栏
1
A
回答
3
右键点击使用间谍++实用程序不被调用和关于在以下消息跟踪信息的一个典型应用的结果的客户机,工具栏或标题区域右击:在菜单上
<02620> 005503AE P WM_RBUTTONDOWN fwKeys:MK_RBUTTON xPos:1048 yPos:7
<02621> 005503AE P WM_RBUTTONUP fwKeys:0000 xPos:1048 yPos:7
<02622> 005503AE S WM_CONTEXTMENU hwnd:005503AE xPos:1174 yPos:63
但是右击产生在间谍++消息窗口没有相应的跟踪信息。所以它看起来像这是标准的Windows行为。
我怀疑的Windows响应生成WM_CONTEXTMENU消息给WM_RBUTTONDOWN和WM_RBUTTONUP消息,并因为这些当你右击菜单上,不显示弹出式上下文菜单中也不会产生。
但是,如果你真的想这样的行为,你可以做的是陷阱WM_NCRBUTTONDOWN客户端鼠标消息,此消息处理程序中发布自己的WM_CONTEXTMENU消息框架窗口。
1
感谢您指点我正确的方向。我可以通过处理WM_NCRBUTTONUP消息来完成它,并在处理程序内检查点是否在菜单栏上。
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CONTEXTMENU() ON_WM_NCRBUTTONUP() END_MESSAGE_MAP() void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point) { // do not display our popup menu for title bar, etc CRect rcClient; GetClientRect(rcClient); ClientToScreen(rcClient); if (rcClient.PtInRect(point)) PopupMenu(point); else __super::OnContextMenu(pWnd, point); } void CMainFrame::OnNcRButtonUp(UINT nHitTest, CPoint point) { if (nHitTest == HTMENU) PopupMenu(point); CFrameWnd::OnNcRButtonUp(nHitTest, point); } int CMainFrame::PopupMenu(CPoint &point) { // display popup menu .... }
相关问题
- 1. macOS菜单栏应用程序:主菜单未显示
- 2. 在iphone应用程序的标签栏上显示子菜单
- 3. 菜单下拉菜单在手机上无法正确显示
- 4. 如何从Cocoa应用程序显示Finder上下文菜单?
- 5. Android上下文菜单显示在onCreate
- 6. 在显示上下文菜单CONTENTEDITABLE格
- 7. 在Chrome上的本地主机上禁用上下文菜单
- 8. 下划线主题子菜单现在在手机上显示
- 9. 显示菜单在上下文菜单的ExtJS
- 10. 在网页上显示菜单栏
- 11. 显示上下文菜单(标记)
- 12. 全屏显示上下文菜单WPF
- 13. 显示不同的上下文菜单
- 14. 只显示上下文菜单tabcontrol
- 15. Android:在主菜单上显示高分
- 16. 无法使选项菜单..显示为上下文菜单Android
- 17. 将ToolStripDropDownButton的菜单显示为上下文菜单
- 18. 上下文菜单不显示子菜单
- 19. 编程上下文菜单
- 20. 上下文菜单
- 21. 在Bootstrap(AdminLTE)上的下拉菜单中显示活动菜单
- 22. 下拉菜单不显示在IE上
- 23. 如何显示应用程序栏(菜单)xml文件
- 24. IntelliJ Idea只在主显示屏上打开主菜单,上下文菜单和自动完成功能
- 25. 菜单点击打开一个上下文菜单栏
- 26. 在菜单项上调用android上下文菜单按
- 27. DocumentViewer工具栏和上下文菜单
- 28. 如何在菜单栏上下拉菜单时截取Wxpython GUI程序
- 29. 在我的应用程序中使用上下文菜单
- 30. GTK:定位上下文菜单项w.r.t上下文菜单