• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:APIのメッセージループの流れとTranslateMessage)

APIのメッセージループの流れとTranslateMessage

このQ&Aのポイント
  • APIのメッセージループでは、GetMessage関数を利用してメッセージを受信し、TranslateMessage関数でメッセージを変換し、DispatchMessage関数でメッセージを送信します。
  • しかし、実際にはWM_KEYDOWNメッセージが先に送信されることがあります。これは、TranslateMessage関数がメッセージを変換する際に、WM_KEYDOWNメッセージをWM_CHARメッセージに変換するためです。
  • したがって、WM_KEYDOWNメッセージが先に送信されることがあるのは、TranslateMessage関数の処理によるものであり、思い違いではありません。

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

  • ベストアンサー
  • kmb01
  • ベストアンサー率45% (63/138)
回答No.1

>TranslateMessageでWM_CHARに変換され TranslateMessageは変換ではなく、新たにWM_CHAR, WM_SYSCHARを作り出してポストします。元のメッセージはそのままです。 そのため、続くDispatchMessageはWM_KEYDOWNで実行されます。 その次のGetMessageでは、キーボードメッセージよりもポストされたメッセージの方が優先順位が高いため、WM_CHARが取り出されることになります。

ggaogg
質問者

お礼

なるほど、変換したものをポストするだけだったんですか。 MSDNより >仮想キーメッセージを文字メッセージへ変換します。文字メッセージは、呼び出し側スレッドのメッセージキューにポストされ..... 「変換します」って部分ではまってしまったようです。 ありがとうございました。