掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログボックス上でWM_KEYDOWNを捕まえる (ID:55314)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
DotLさんへ >その画像の出力先は、ピクチャーボックスなどのスタティックコントロールなどは一切なしで、直接、ダイアログボックスの表面に描いてるってことですか? そうです。 ダイアログボックスのデバイスコンテキストを取得し、それに直接 描画しています。 >GetKeyState 関数で拾うとか...同じことですよね。 これもやっぱりキー入力のタイミングを検知する必要があるので。 (noname)さんへ >まず,ダイアログプロシージャの WM_INITDIALOG で >TRUE を返している事を確認してみな。 >ここで FALSE を返していると,DialogBox() は勝手に >どっかヘンな所にフォーカスを当ててしまう。 もちろんTRUEを返しています。 (noname)さんのコードを走らせると確かに focusと言う表示はあるものの依然としてWM_KEYDOWNは飛んできません。 そこで下記のコードを走らせてみると、WM_SETFOCUSが飛んできたその直後に WM_KILLFOCUSが飛んできているのが確認できます。 BOOL CALLBACK hogeDialogProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp){ switch(msg){ case WM_INITDIALOG: SetFocus(hwnd); return TRUE; case WM_SETFOCUS: SetWindowText(hwnd, "FOCUS!!"); break; case WM_KILLFOCUS: SetWindowText(hwnd, "UN FOCUS"); break; } return FALSE; } どうも私のダイアログはフォーカスによほど嫌われているようです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.