vb6 - 当我从 VB6 的上下文菜单中选择一个选项时,如何停止显示额外的上下文菜单?

标签 vb6 contextmenu subclassing ime componentone

我正在维护一个包含 ComponentOne VSFlexGrid 7.0 的 VB6 表单的应用程序。我们有一个自定义上下文菜单,允许用户执行一些专门的复制和粘贴操作。最近,我们遇到了以下问题:

  1. 突出显示其中一个单元格中的一些文本。
  2. 右键单击单元格,文本仍然突出显示。
  3. 选择上下文菜单选项之一。
  4. 发生请求的上下文菜单操作。
  5. 与所示菜单类似的另一个上下文菜单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/

相关文章:

.net - 将 System.Array 从 .Net 编码到 vb6

delphi - 将上下文菜单添加到 TPageControl 的选项卡

python - 当子类化 ndarray 时,为什么转置发生在 __array_finalize__ 之后而不是之前?

iphone - Objective-C 子类化基础知识,如何添加自定义属性;

com - 手动注册activex exe

c++ - 将整数参数从 Vb6 传递到 C++ dll

vb6 - 将 8 字节数组转换为 Double

macos - 获取上下文菜单操作上右键单击事件的位置

c# - 通过右键单击桌面或目录背景创建 Shell ContextMenu

ios - 映射解析对象在 callFunctionInBackground 中不起作用