• ベストアンサー

自作ダイアログボックス中のエディットボックスでCtrl+Aを使えるようにしたい。

リソースエディタで作成したダイアログボックスの中のエディットボックスで、 Ctrl+Aで全範囲選択をしたいのですが実現方法が分かりません。 同様に、リストビューの選択行を「Delキー」で削除させる方法も教えていただきたいです。 (削除ボタンを作成し、その押下によって削除できるようにはなっています。) 環境は、VC++ 6.0、Win32 APIです。 よろしくお願い致します。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★WM_COMMAND ではないです。 ・『CTRL+A』の検出は WM_KEYDOWN で『CTRL』の押し下げと『A』キーの押し下げを  チェックすれば良いです。なのでサブクラス化したときの WM_COMMAND ではなくて  WM_KEYDOWN という事ですから ID というよりは仮想キーコードをチェックします。 ・次のリンクを参考にして下さい。  http://wisdom.sakura.ne.jp/system/winapi/win32/win30.html→『キーボードイベント』  http://wisdom.sakura.ne.jp/system/winapi/win32/win32.html→『仮想キーの状態』 >同様に、リストビューの選択行を「Delキー」で削除させる方法も教えていただきたいです。  ↑  こちらもサブクラス化したときに『DEL』キーを WM_KEYDOWN メッセージで処理します。  『DEL』キーの仮想キーコードは VK_DELETE です。  『INS』キーの仮想キーコードは VK_INSERT となります。  あと『A』から『Z』はそのまま文字コードで 'A'から'Z'とします。  決して VK_A ~ VK_Z があるわけではありません。注意! ・以上。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win32.html
kenkenpo
質問者

お礼

とても分かりやすい回答ありがとうございます。 これでなんとか出来そうです。 ありがとうございました。

kenkenpo
質問者

補足

お世話になっております。 お陰さまで、目的の機能を実現することができました。 本当にありがとうございました。 ところで話は変わってしまうのですが、この質問以外で現在私が投稿しているものがありまして まだ解決していない状況です。 大変図々しいお願いかとは思いますが、もしお時間が許されるようでしたら、 お暇なときで結構ですのでアドバイスを頂けたら幸いです。 プログラミングに非常に精通していらっしゃるOh-Orangeのご意見・アドバイスを伺いたい次第です。 URLはhttp://oshiete.nikkeibp.co.jp/qa3184828.htmlです。 何卒、よろしくお願い致します。 不適切な発言でしたら、大変申し訳ありませんでした。

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★両方ともサブクラス化などで出来そうですね。 ・サブクラス化したプロシージャの中で『CTRL+A』を検出してその動作に  『すべて選択』の機能を追加します。  EM_SETSEL ですべて選択させることが出来ます。  SendMessage()、PostMessage() などでエディットボックスに送りましょう。 ・短いですが以上です。

kenkenpo
質問者

お礼

早速のご回答ありがとうございます。 大筋は分かりました。 基本的なことで申し訳ないのですが『CTRL+A』の検出というのはどのように行えばよいのでしょうか。 WM_COMMAND:などで捕まえればいいのでしょうか。 その際のIDは何になるのでしょうか。

関連するQ&A

専門家に質問してみよう