掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログボックス上でWM_KEYDOWNを捕まえる (ID:55307)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
返信ありがとうございます。 >ダイアログに1つでもボタンなどのコントロールがあれば、 >普通は来ないでしょう。 件のダイアログには画像が表示されているだけで、各キー操作により その画像に変更を加えたいと考えていますので、コントロールは一つもありません。 >WM_KEYDOWN メッセージは、ダイアログ内で入力フォーカスが当てられているコントロールに送られます。 ダイアログそのものに入力フォーカスを当てることは出来ないのでしょうか。 WM_INITDIALOGのタイミングでSetFocus()APIを使いダイアログにフォーカスを 設定しているのですが、依然としてWM_KEYDOWNは飛んできません。 >つまり、拾うには、SetWindowLong 関数を使ってコントロールのウインドウハンドルのプロシージャをダイアログのプロシージャに変更すればいくと思います。 私はウィンドウプロシージャはそのウィンドウの挙動を決定するものだと考えています。 また、ダイアログボックスはサブクラス化などをするまでも無くプロシージャを いじれる立場にありますし、他のコントロールからプロシージャを引っ張ってくる のは出来れば避けたいと思います。 現在DotLさんの返信を参考に、キー入力を受け付けるためだけのコントロールを作成し、 そのコントロールがキー入力を受け取ったら、ダイアログにWM_KEYDOWNメッセージを SendMessage()で送るようにするしか無いかなと考えていますが、どうも煩雑な 気がします。 どうにかもっとスマートに書く手は無いでしょうか。 非常にわがままを言っているとは思いますが、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.