• ベストアンサー

テキストボックスでの右クリックのメニューを無効にしたい

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

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

#1の方の回答ですと、コンテキストキーでメニューが表示されてしまいますのでだめですね。 #2の方の場合はメニューが出ますし、、#3の方の場合はメッセージボックスが出るからメニューが消えている状態です。 で、どうするのがいいのかというと、WM_CONTEXTMENUのメッセージをフックし、破棄する必要があります。 なお、このメッセージ定数はwinapi32.txtに定義されていません。 VC++のヘッダを見ると、 #define WM_CONTEXTMENU 0x007B となっているので自分で Public Const WM_CONTEXTMENU = &h7B と記述する必要があります。 (もちろん上のをコピってもかまいませんが) あとは、#1の方の参考urlを元に、テキストボックスをサブクラス化すればOKです。(フォームではないところがポイントです)

masa00
質問者

お礼

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

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

#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

masa00
質問者

お礼

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

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。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

masa00
質問者

お礼

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

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

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

参考URL:
http://www.galliver.co.jp/writing/msdn/msdn06/
masa00
質問者

お礼

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

関連するQ&A