<Return[T]><Top>

TranslateMessage

Declare Function Api_TranslateMessage& Lib "user32" Alias "TranslateMessage" (lpMsg As MSG)

Declare Function TranslateMessage Lib "user32" (lpMsg As MSG) As Long

仮想キーメッセージを文字メッセージへ変換する。文字メッセージは、呼び出し側スレッドのメッセージキューにポストされ、次にそのスレッドが GetMessage または PeekMessage 関数を呼び出すと、その文字メッセージが読み取られる。

パラメータ
lpMsg
    メッセージ情報を保持している、1 個の MSG 構造体へのポインタを指定する。

    呼び出し側スレッドは、GetMessage または PeekMessage 関数を使って、自らのメッセージキューからこのメッセージ情報を取得する。

 
戻り値
    メッセージが変換された場合(つまり、文字メッセージをスレッドのメッセージキューにポストした場合)、0 以外の値が返る。
    メッセージが、WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN、WM_SYSKEYUP のいずれかであった場合、変換の有無に

    かかわりなく、0 以外の値が返る。
    メッセージが変換されなかった場合(つまり、文字メッセージをスレッドのメッセージキューにポストしなかった場合)、0 が返る。

解説
    TranslateMessage 関数は、lpMsg パラメータが指すメッセージに変更を加えない。
    WM_KEYDOWN と WM_KEYUP の各メッセージの組み合わせは、WM_CHAR または WM_DEADCHAR メッセージを生成する。

    WM_SYSKEYDOWN と WM_SYSKEYUP の各メッセージの組み合わせは、WM_SYSCHAR または WM_SYSDEADCHAR メッセージ

    を生成する。
    TranslateMessage 関数は、キーボードドライバが ASCII 文字を割り当てているキーに対してのみ、WM_CHAR メッセージを生成する。
    アプリケーションが何か他の目的で仮想キーメッセージを処理する場合、TranslateMessage 関数を呼び出すべきではない。たとえば、

    TranslateAccelerator 関数が 0 以外の値を返した場合(キーボードメッセージが変換された場合)、TranslateMessage 関数を呼び出す

    べきではない。