次の方法で共有


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 または WM_SYSCOMMAND メッセージの wParam パラメーターの上位ワードに値 1 が含まれています。

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

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

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

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

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

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll

関連項目

概念

CreateAcceleratorTable の

GetMessage の

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

LoadAccelerators

MSG

PeekMessage の

リファレンス

SetCapture の

TranslateMessage を する

WM_COMMAND

WM_INITMENU

WM_INITMENUPOPUP

WM_KEYDOWN

WM_SYSCOMMAND

WM_SYSKEYDOWN