0

サイトとMSDNドキュメントを見てきましたが、PostMessage()の最後のパラメーターがまだわかりません。

PostMessageの使用方法を尋ねるフォーラムでは、次の2つの実装のいずれかで返信します。

  1. PostMessage(WindowHandle、WM_KEYDOWN、KeyCode、MapVirtualKey(KeyCode、0)<< 16);
  2. PostMessage(WindowHandle、WM_KEYDOWN、KeyCode、0);

違いは何ですか?ある場合には最後のパラメータを0のままにしておくことができるのに、他の場合には「シフト」する必要があるのはなぜですか?

簡単な質問です。エッセイの返信は必要ありません(ただし、非常に高く評価されます)。任意の洞察をいただければ幸いです。前もって感謝します。

4

1 に答える 1

0

PostMessageの詳細については、ここを参照してください。メッセージはそれぞれ異なり、必要なパラメーターに関して独自の仕様があります。多くの点で、別の関数(メッセージ名)に委任してそれらのパラメーターを渡す1つの名前(メッセージの投稿)を持つ一般的な関数と見なすことができます。

残りのパラメータと同様に、最後のパラメータはメッセージ固有であり、変更される可能性があります。

BOOL PostMessage(
  __in  HWND hWnd,
  __in  UINT Msg,
  __in  WPARAM wParam,
  __in  LPARAM lParam
);

最初のメッセージでは、WM_KEYDOWNは上位16ビットでのみlParamのMapVirtualKeyの結果を必要とします。私はもうこのメッセージに慣れていませんが、2番目のパラメーターとして0が渡されているため、コードをスキャンするための仮想キー(またはその逆)は必要ありませんが、キーコードはlParamの上位16ビットでまだ必要

于 2010-04-26T23:00:35.970 に答える