OnKeyDown、OnKeyUpが効かない – プログラミング – Home

通知
すべてクリア

[解決済] OnKeyDown、OnKeyUpが効かない


koba
 koba
(@koba)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

Visual Studio 2010でMFCを使用している者です。OSはwin7です。

ダイアログベースにおいて、プロジェクトが作られた初期状態から、
プロパティ→メッセージ→WM_KEYDOWN→<add OnKeyDown>を選択し、
この時作られた関数内にブレークポイントを設置し、実行中にキーを押しても
警告音ばかり鳴って、設置したブレークポイントで止まりません。

OnKeyUpについても同様ですが、OnLButtonDownなどマウス系統では、
関数内のブレークポイントで止まるので、キーボードからの入力に
反応しないようです。

キーボードからの反応をさせるには、どうしたらよいでしょうか。

お忙しい中申し訳ございませんが、よろしくお願いします。


引用未解決
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

そのキー入力を受け取るコントロール(エディットボックス…かな?)がないので、
ダイアログプロシージャに渡す前にOSが破棄してしまったのでないでしょうか?
# まぁ、エディットボックス配置するとダイアログ自体にWM_KEYDOWNとか飛ばなくなるか
も知れませんが。
# フォーカスの当たっているエディットボックスが受け取って処理するでしょうし。


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

デフォルトで用意されているOkとキャンセルボタンにフォーカスがあたっているので
この2つのボタンを削除する


返信引用
koba
 koba
(@koba)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

ご返答、ありがとうございます。
ボタンを削除したら、無事反応するようになりました。

ということは、いろいろなもの(スタティックテキストやテキストボックス、ピクチャ
ーコントロールなど)を置いていくと、また反応しなくなりますね。
そうなった場合、どうすると良いでしょうか。

重ね重ねですみません。


返信引用
デゴルガン
 デゴルガン
(@デゴルガン)
ゲスト
結合: 16年前
投稿: 20
 

PreTransrateMessage をオーバーライドして処理すると良いのではないでしょうか?


返信引用
koba
 koba
(@koba)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

ご返答、ありがとうございます。
報告が遅れて申し訳ありません。

PreTransrateMessageをオーバーライドして、その中で
if(pMsg->message == WM_KEYDOWN)
としたら、キーボードの反応を受け取ることができました。

ご協力ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました