TranslateAcceleratorA 関数 (winuser.h)

メニュー コマンドのアクセラレータ キーを処理します。 関数は 、WM_KEYDOWN または WM_SYSKEYDOWN メッセージを WM_COMMAND または WM_SYSCOMMAND メッセージに変換し (指定したアクセラレータ テーブルにキーのエントリがある場合)、 WM_COMMAND または WM_SYSCOMMAND メッセージを指定されたウィンドウ プロシージャに直接送信します。 TranslateAccelerator は、ウィンドウ プロシージャがメッセージを処理するまで戻りません。

構文

int TranslateAcceleratorA(
  [in] HWND   hWnd,
  [in] HACCEL hAccTable,
  [in] LPMSG  lpMsg
);

パラメーター

[in] hWnd

型: HWND

メッセージを変換するウィンドウへのハンドル。

[in] hAccTable

種類: HACCEL

アクセラレータ テーブルへのハンドル。 アクセラレータ テーブルは、 LoadAccelerators 関数の呼び出しによって読み込まれたか、 CreateAcceleratorTable 関数の呼び出しによって作成されている必要があります。

[in] lpMsg

種類: LPMSG

GetMessage 関数または PeekMessage 関数を使用して呼び出し元のスレッドのメッセージ キューから取得したメッセージ情報を含む MSG 構造体へのポインター。

戻り値

型: int

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

この関数がメニューまたはコントロールによって送信されるメッセージから送信されるメッセージを区別するために、WM_COMMANDまたはメッセージwParam パラメーターの上位ワードには値 1 WM_SYSCOMMAND が含まれています。

ウィンドウ メニューから項目を選択するために使用されるアクセラレータ キーの組み合わせは、WM_SYSCOMMAND メッセージに変換されます。他のすべてのアクセラレータ キーの組み合わせは、WM_COMMAND メッセージに変換されます。

TranslateAccelerator が 0 以外の値を返し、メッセージが翻訳された場合、アプリケーションは TranslateMessage 関数を使用してメッセージを再処理しないでください。

アクセラレータはメニュー コマンドに対応している必要はありません。

アクセラレータ コマンドがメニュー項目に対応する場合、アプリケーションは、ユーザーがメニューを表示しようとしているかのように、 WM_INITMENU してメッセージを WM_INITMENUPOPUP します。 ただし、次のいずれかの条件が存在する場合、これらのメッセージは送信されません。

  • このウィンドウは無効になっています。
  • アクセラレータ キーの組み合わせは、 ウィンドウ メニューの項目に対応せず、ウィンドウは最小化されます。
  • マウス キャプチャが有効です。 マウス キャプチャの詳細については、 SetCapture 関数を参照してください。
指定したウィンドウがアクティブ ウィンドウで、ウィンドウにキーボード フォーカスがない場合 (通常、ウィンドウが最小化されている場合)、TranslateAccelerator はメッセージをWM_KEYUPしたりWM_KEYDOWNしたりするのではなく、WM_SYSKEYUPWM_SYSKEYDOWNメッセージを翻訳します。

メニューを所有するウィンドウが最小化されているときに、メニュー項目に対応するアクセラレータキーストロークが発生した場合、 TranslateAcceleratorWM_COMMAND メッセージを送信しません。 ただし、ウィンドウのメニューまたはウィンドウ メニューのどの項目とも一致しないアクセラレータキーストロークが発生した場合、ウィンドウが最小化されている場合でも、関数はWM_COMMANDメッセージを送信します。

例については、「 フォント属性のアクセラレータの作成」を参照してください。

注意

winuser.h ヘッダーは、TranslateAccelerator をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll

関連項目

概念

CreateAcceleratorTable

GetMessage

キーボード アクセラレータ

LoadAccelerators

Msg

PeekMessage

リファレンス

SetCapture

TranslateMessage

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN