- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:最初に押されたキーを調べるには?)
最初に押されたキーを調べるには?
このQ&Aのポイント
- CTRLを押しながらAを押した場合だけメッセージボックスを表示するように変えたい
- 2つのキーが押されている時に最初に押されたキーを調べる方法がわかりません
- Microsoft Visual C++ 2010 ExpressでのWIN32 ユニコードビルド環境でのC言語のプログラム
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
WM_KEYDOWNメッセージを発生させたキーのデータはwParamに入っています。これがVK_CONTROLであればCtrlキーが押されたと判定できます。 Ctrlキーが押されたときのWM_KEYDOWNは何も処理せずに、Aキーが押されたときのみCtrlキーの状態を判定して、処理を行えば解決できると思います。 Aキーを押しっぱなしにすると、WM_KEYDOWNが複数発生しますが、その場合はlParamのbit30を調べて、0の場合が初回のWM_KEYDOWNと判断できます。
その他の回答 (1)
- maiko0333
- ベストアンサー率19% (839/4401)
回答No.1
if(GetKeyState(VK_CONTROL)<0)){ if (GetKeyState(0x41)<0){ MessageBox(hWnd,TEXT("CTRL+Aが押されました。"),TEXT("テスト"),MB_OK); } } こうしたらどうでしょう?
質問者
お礼
回答ありがとうございました。その方法は一番最初に試したのですが、うまくいかなかったです。
お礼
回答ありがとうございました。プログラムを下のように変更したら無事解決しました。 if(wParam==0x41){ if(GetKeyState(VK_CONTROL)<0){MessageBox(hWnd,TEXT("CTRL+Aが押されました。"),TEXT("テスト"),MB_OK); } }