次の方法で共有


TranslateAcceleratorW 関数 (winuser.h)

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

構文

int TranslateAcceleratorW(
  [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_SYSKEYUPWM_SYSKEYDOWNメッセージを変換します。

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

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

注意

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

要件

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

こちらもご覧ください