掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ダイアログボックス上でWM_KEYDOWNを捕まえる (ID:55313)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
(;´Д`)y-~~ 腹が痛ぇ。なんか中ったかも。 まず,ダイアログプロシージャの WM_INITDIALOG で TRUE を返している事を確認してみな。 ここで FALSE を返していると,DialogBox() は勝手に どっかヘンな所にフォーカスを当ててしまう。 それでもよく分かんねかったら,ダイアログプロシージャに 次のコードを適当に埋め込んでみろよ。 ダイアログの左上に "focus" と表示されていれば ダイアログにフォーカスが当たってる事を意味する。 それだけのコードだけどな ( ´ー`)y-~~ うひひ BOOL __stdcall YourDialogProc (HWND hwnd, UINT msg, WPARAM, LPARAM ) { (前略) // WM_PAINT に反応する if (msg == WM_PAINT) { PAINTSTRUCT ps; HDC dc = ::BeginPaint(hwnd, &ps); if (::GetFocus() == hwnd) ::TextOut(dc, 0, 0, "focus", 5); ::EndPaint(hwnd, &ps); return TRUE; } // フォーカスの変化に反応する if (msg == WM_SETFOCUS || msg == WM_KILLFOCUS) { ::RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_ERASE); return TRUE; } (後略) return FALSE; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.