- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダイヤログボックス内のマウスイベントの処理)
ダイヤログボックス内のマウスイベントの処理
このQ&Aのポイント
- ダイヤログボックス内のマウスイベントの処理についての質問です。
- WinXP + BCCでCのプログラムを作成しています。ダイヤログボックス内のマウスイベントの処理で、ALTキーが押されている場合と押されていない場合で処理を変えたいのです。
- alt_downという変数を用意してみましたがうまくいきません。どのようにすれば実現できるでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
WM_MOUSEMOVE処理時に、GetKeyState/GetKeyboardState/GetAsyncKeyStateなどのAPIでAltキーの状態を確認してはどうでしょうか。
その他の回答 (2)
- php504
- ベストアンサー率42% (926/2160)
回答No.2
ダイアログはどうやって作ってますか メインウィンドウからモードレスダイアログを開いていればメインのの方にメッセージが行ってるかもしれません メインループで IsDialogMessage を使う必要があります
- php504
- ベストアンサー率42% (926/2160)
回答No.1
alt_down が自動変数で値が保持されてないとかではないですか。
質問者
補足
回答ありがとうございます。 alt_downは自動変数ではありません。 問題は、ALTキーを押しても case WM_SYSKEYDOWN: に飛んで来ない事のようです。 飛んでこなくても、私のやりたいことは、 case WM_MOUSEMOVE: に来たとき、ALTキーの押し下げ状態がわかる関数がほしいのですが・・・
お礼
ありがとうございます。以下のように alt_down = (GetKeyState(VK_MENU)<0)? 1: 0; を追加したら、希望する動作になりました。 (ほかでもalt_downの値を使うため) case WM_MOUSEMOVE: alt_down = (GetKeyState(VK_MENU)<0)? 1: 0; if(alt_down == 1) { ALTキーが押されているときの処理 } else { ALTキーが押されていないときの処理 } break;