「覚え間違い」を教えてください!

テキストボックス上で右クリックをすると、メニューが表示してしまいます。
表示しなくする方法があれば教えて下さい。
フォーム上では PopupMenu が必要なので設定しています。
よろしくお願いします。

A 回答 (4件)

#1の方の回答ですと、コンテキストキーでメニューが表示されてしまいますのでだめですね。



#2の方の場合はメニューが出ますし、、#3の方の場合はメッセージボックスが出るからメニューが消えている状態です。

で、どうするのがいいのかというと、WM_CONTEXTMENUのメッセージをフックし、破棄する必要があります。


なお、このメッセージ定数はwinapi32.txtに定義されていません。

VC++のヘッダを見ると、
#define WM_CONTEXTMENU 0x007B
となっているので自分で
Public Const WM_CONTEXTMENU = &h7B
と記述する必要があります。
(もちろん上のをコピってもかまいませんが)

あとは、#1の方の参考urlを元に、テキストボックスをサブクラス化すればOKです。(フォームではないところがポイントです)
    • good
    • 0
この回答へのお礼

ありがとうございました。もうすぐ完成です。助かりました。

お礼日時:2002/09/25 15:02

#1のご回答者は相当VB等熟達のお方のようで、解答が短く、私にはむつかしかったので、ヒントのWEBを参考にして下記をやって見ました。

これで良い様に見えるのですが、やって見て下さい。ご存知の方は不完全な点があればご教示頂ければと思います。
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
With Text1
' テキストボックスのイベント認識をオフ
.Enabled = False
MsgBox "右ボタンは使えません"
End With
End If
Text1.Enabled = True
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2002/09/25 15:05

こんにちは。

maruru01です。

いんちきっぽいやり方ですが。
試してないので、出来なかったらすいません。


Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

  If Button = vbRightButton Then
    Text1.Enabled = False
    Text1.Enabled = True
  End If

End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2002/09/25 15:04

サブクラス化してWM_RBUTTONUPをフックするとか



参考URL:http://www.galliver.co.jp/writing/msdn/msdn06/
    • good
    • 0
この回答へのお礼

ありがとうございました。今はなんとなく解かりもうすぐ完成です。

お礼日時:2002/09/25 15:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報