Visual Studio 2010でMFCを使用している者です。OSはwin7です。
ダイアログベースにおいて、プロジェクトが作られた初期状態から、
プロパティ→メッセージ→WM_KEYDOWN→<add OnKeyDown>を選択し、
この時作られた関数内にブレークポイントを設置し、実行中にキーを押しても
警告音ばかり鳴って、設置したブレークポイントで止まりません。
OnKeyUpについても同様ですが、OnLButtonDownなどマウス系統では、
関数内のブレークポイントで止まるので、キーボードからの入力に
反応しないようです。
キーボードからの反応をさせるには、どうしたらよいでしょうか。
お忙しい中申し訳ございませんが、よろしくお願いします。
そのキー入力を受け取るコントロール(エディットボックス…かな?)がないので、
ダイアログプロシージャに渡す前にOSが破棄してしまったのでないでしょうか?
# まぁ、エディットボックス配置するとダイアログ自体にWM_KEYDOWNとか飛ばなくなるか
も知れませんが。
# フォーカスの当たっているエディットボックスが受け取って処理するでしょうし。
デフォルトで用意されているOkとキャンセルボタンにフォーカスがあたっているので
この2つのボタンを削除する
ご返答、ありがとうございます。
ボタンを削除したら、無事反応するようになりました。
ということは、いろいろなもの(スタティックテキストやテキストボックス、ピクチャ
ーコントロールなど)を置いていくと、また反応しなくなりますね。
そうなった場合、どうすると良いでしょうか。
重ね重ねですみません。
PreTransrateMessage をオーバーライドして処理すると良いのではないでしょうか?
ご返答、ありがとうございます。
報告が遅れて申し訳ありません。
PreTransrateMessageをオーバーライドして、その中で
if(pMsg->message == WM_KEYDOWN)
としたら、キーボードの反応を受け取ることができました。
ご協力ありがとうございました。