我正在使用包含ComponentOne VSFlexGrid 7.0的VB6表单维护一个应用程序。我们有一个自定义上下文菜单,允许用户执行一些专门的复制和粘贴操作。最近,我们遇到了以下问题:
如何让第二个上下文菜单消失?到目前为止,我已经尝试了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有更深入了解的人,请告诉我有关事件序列发生的更多详细信息,以及如何防止这些额外的上下文菜单出现?
答案 0 :(得分:2)
您应该正在处理WM_CONTEXTMENU
以显示上下文菜单而不是WM_RBUTTONUP
(因为它不仅仅是可以触发它的右击)。
答案 1 :(得分:1)
在BeforeMouseDown
事件中,如果用户右键单击,请尝试设置Cancel = True
。