- ベストアンサー
テキストボックスでの右クリックのメニューを無効にしたい
テキストボックス上で右クリックをすると、メニューが表示してしまいます。 表示しなくする方法があれば教えて下さい。 フォーム上では PopupMenu が必要なので設定しています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1の方の回答ですと、コンテキストキーでメニューが表示されてしまいますのでだめですね。 #2の方の場合はメニューが出ますし、、#3の方の場合はメッセージボックスが出るからメニューが消えている状態です。 で、どうするのがいいのかというと、WM_CONTEXTMENUのメッセージをフックし、破棄する必要があります。 なお、このメッセージ定数はwinapi32.txtに定義されていません。 VC++のヘッダを見ると、 #define WM_CONTEXTMENU 0x007B となっているので自分で Public Const WM_CONTEXTMENU = &h7B と記述する必要があります。 (もちろん上のをコピってもかまいませんが) あとは、#1の方の参考urlを元に、テキストボックスをサブクラス化すればOKです。(フォームではないところがポイントです)
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17070)
#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
お礼
回答ありがとうございました。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。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
お礼
回答ありがとうございました。
- todo36
- ベストアンサー率58% (728/1234)
サブクラス化してWM_RBUTTONUPをフックするとか
お礼
ありがとうございました。今はなんとなく解かりもうすぐ完成です。
お礼
ありがとうございました。もうすぐ完成です。助かりました。