コンボボックスのコンテキストメニュー制御


hideki  2003-02-19 00:20:54  No: 106066

初めて質問いたします。

ドロップダウンコンボボックスを使用し、キーボードによる
テキストの入力は可能としています。
右クリックするとでてくるデフォルトのメニュー(コンテクストメニュー)の出力を抑制することは可能でしょうか?
(コンテクストメニューの”貼り付け”を行いたくないのです。)

良い方法がございましたら、ご教授お願いいたします。


たかみちえ  URL  2003-02-19 08:23:48  No: 106067

テキストボックスだと、右クリック時のイベントで、
EnabledをFalseにすればいいとか、書いてあるのを見たことがありますけど、
  それの応用でできませんか?


とろ  2003-02-19 19:40:03  No: 106068

コンテキストメニューを表示させたくないというならば、
サブクラス化して WM_CONTEXTMENU メッセージを無視するようにしましょう。
# コンテキストメニューはマウスの右クリック以外にも、
# キーボードのプロパティキーや Shift+F10 など、
# いろいろな方法で表示させることができてしまいます。

右クリックした時だけ、コンテキストメニューを表示させたくない
(他の方法では、表示させたい)という場合は、
たかみちえさんの方法で良いと思います。

また、貼り付けをできないようにしたいという場合は、
WM_PASTE メッセージを無視するようにしましょう。
# 貼り付けも、コンテキストメニュー表示と同様、
# コンテキストメニューから [貼り付け] を選択する方法や、
# Ctrl+V など、いろいろな方法で貼り付けることができてしまいます。

ただ、ここまで行うのは面倒(危険)なので、
貼り付けなどはできるようにしておいて、処理を実行する時に、
コンボの中身のチェックを行うのが普通かと思います。


hideki  2003-02-20 04:34:02  No: 106069

ご指導ありがとうございます。

コンボに右クリックイベントってあるんですか?(見つけられません。)
また、キーボードによる操作であればコンボのイベントで逃がせるのですが、
右クリックをイベントで逃がす方法がわかりません。

できれば、そのコンボだけ右クリックのコンテキストメニューの制御ができれば
よいのですが・・・。

未熟なもので、”WM_PASTE メッセージを無視する”というのは特定のコンボだけ
無視するようにできるのでしょうか?

お知恵をお貸しください。


とろ  2003-02-20 18:16:28  No: 106070

MouseDown イベントってないみたいですね。
あるものとばっかり思っていました。

代替案
テキストボックスとコンボボックス(ドロップダウンリスト)を
2つ重ねて配置してみてはどうですか。
そして、コンボから選択した時に、テキストボックスに
その内容を反映させるとか。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加