• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダイヤログボックス内のマウスイベントの処理)

ダイヤログボックス内のマウスイベントの処理

このQ&Aのポイント
  • ダイヤログボックス内のマウスイベントの処理についての質問です。
  • WinXP + BCCでCのプログラムを作成しています。ダイヤログボックス内のマウスイベントの処理で、ALTキーが押されている場合と押されていない場合で処理を変えたいのです。
  • alt_downという変数を用意してみましたがうまくいきません。どのようにすれば実現できるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

WM_MOUSEMOVE処理時に、GetKeyState/GetKeyboardState/GetAsyncKeyStateなどのAPIでAltキーの状態を確認してはどうでしょうか。

usatan2
質問者

お礼

ありがとうございます。以下のように 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;

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

ダイアログはどうやって作ってますか メインウィンドウからモードレスダイアログを開いていればメインのの方にメッセージが行ってるかもしれません メインループで IsDialogMessage を使う必要があります

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

alt_down が自動変数で値が保持されてないとかではないですか。

usatan2
質問者

補足

回答ありがとうございます。 alt_downは自動変数ではありません。 問題は、ALTキーを押しても case WM_SYSKEYDOWN: に飛んで来ない事のようです。 飛んでこなくても、私のやりたいことは、 case WM_MOUSEMOVE: に来たとき、ALTキーの押し下げ状態がわかる関数がほしいのですが・・・

関連するQ&A

専門家に質問してみよう