• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最初に押されたキーを調べるには?)

最初に押されたキーを調べるには?

このQ&Aのポイント
  • CTRLを押しながらAを押した場合だけメッセージボックスを表示するように変えたい
  • 2つのキーが押されている時に最初に押されたキーを調べる方法がわかりません
  • Microsoft Visual C++ 2010 ExpressでのWIN32 ユニコードビルド環境でのC言語のプログラム

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

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

WM_KEYDOWNメッセージを発生させたキーのデータはwParamに入っています。これがVK_CONTROLであればCtrlキーが押されたと判定できます。 Ctrlキーが押されたときのWM_KEYDOWNは何も処理せずに、Aキーが押されたときのみCtrlキーの状態を判定して、処理を行えば解決できると思います。 Aキーを押しっぱなしにすると、WM_KEYDOWNが複数発生しますが、その場合はlParamのbit30を調べて、0の場合が初回のWM_KEYDOWNと判断できます。

nazoda
質問者

お礼

回答ありがとうございました。プログラムを下のように変更したら無事解決しました。 if(wParam==0x41){  if(GetKeyState(VK_CONTROL)<0){MessageBox(hWnd,TEXT("CTRL+Aが押されました。"),TEXT("テスト"),MB_OK); }  }

その他の回答 (1)

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.1

if(GetKeyState(VK_CONTROL)<0)){ if (GetKeyState(0x41)<0){ MessageBox(hWnd,TEXT("CTRL+Aが押されました。"),TEXT("テスト"),MB_OK); } } こうしたらどうでしょう?

nazoda
質問者

お礼

回答ありがとうございました。その方法は一番最初に試したのですが、うまくいかなかったです。

関連するQ&A