我正在维护一个包含 ComponentOne VSFlexGrid 7.0 的 VB6 表单的应用程序。我们有一个自定义上下文菜单,允许用户执行一些专门的复制和粘贴操作。最近,我们遇到了以下问题:
- 突出显示其中一个单元格中的一些文本。
- 右键单击单元格,文本仍然突出显示。
- 选择上下文菜单选项之一。
- 发生请求的上下文菜单操作。
- 与所示菜单类似的另一个上下文菜单here ,显示“从右到左阅读顺序”、“打开 IME”和“重新转换”等选项。
如何让第二个上下文菜单消失?我试过the Microsoft Knowledge Base describes的方法到目前为止没有运气。我的 WindowProc 函数如下:
Function WindowProc(ByVal hw As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Select Case uMsg
Case WM_RBUTTONUP
frmMain.PopupMenu frmMain.mnuPopUp
Case Else
WindowProc = CallWindowProc(lpPrevWndProc, hw, _
uMsg, wParam, lParam)
End Select
End Function
复制操作发生后,我看到的 uMsg 值是 15 (WM_PAINT) 和 32 (WM_SETCURSOR)。我还注意到,当我没有在单元格中突出显示文本时会触发表单级 MouseUp 事件,但当我在单元格中突出显示文本时它不会触发。
能否请对 VB6 和/或 ComponentOne 有更深入了解的人提供有关事件发生顺序的更多详细信息,以及如何避免显示这个额外的上下文菜单?
最佳答案
您应该处理 WM_CONTEXTMENU
来显示上下文菜单,而不是 WM_RBUTTONUP
(因为不仅仅是右键单击可以触发它)。
关于vb6 - 当我从 VB6 的上下文菜单中选择一个选项时,如何停止显示额外的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182988/