3

ComponentOneVSFlexGrid7.0を含むVB6フォームでアプリケーションを保守しています。ユーザーが特殊なコピーアンドペースト操作を実行できるカスタムコンテキストメニューがあります。最近、次の問題が発生しました。

  1. セルの1つでテキストを強調表示します。
  2. テキストを強調表示したまま、セルを右クリックします。
  3. コンテキストメニューオプションの1つを選択します。
  4. 要求されたコンテキストメニュー操作が発生します。
  5. ここに示されているものと同様の別のコンテキストメニューが表示され、「右から左への読み取り順序」、「IMEを開く」、「再変換」などのオプションがあります。

この2番目のコンテキストメニューを削除するにはどうすればよいですか?これまでのところ、Microsoftナレッジベースで説明されている方法を試しましたが、うまくいきませんでした。私の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の知識が豊富な人に、発生するイベントのシーケンスと、この追加のコンテキストメニューが表示されないようにする方法について詳しく教えてください。

4

2 に答える 2

2

WM_CONTEXTMENU代わりにコンテキストメニューを表示するように処理する必要がありますWM_RBUTTONUP(それをトリガーできるのは右クリックだけではないため)。

于 2011-08-25T06:15:04.610 に答える
1

BeforeMouseDownイベントでは、ユーザーが右クリックしているかどうかを設定してみてCancel = Trueください。

于 2011-08-30T19:23:26.217 に答える