印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Win32 および COM 開発
SDK ドキュメント
ユーザー入力
リファレンス
関数
 TranslateAccelerator 関数
プラットフォーム SDK
TranslateAccelerator

メニューコマンドに対応するアクセラレータキー( ショートカットキー)を処理します。この関数は、 メッセージまたは メッセージを、 メッセージまたは メッセージへ変換し( 指定されたアクセラレータテーブル内に、キーに対応するエントリが存在する場合)、WM_COMMAND または WM_SYSCOMMAND メッセージを、適切なウィンドウプロシージャへ直接送信します。ウィンドウプロシージャがそのメッセージを処理し終わるまで、TranslateAccelerator は制御を返しません。

int TranslateAccelerator(
  HWND hWnd,         // 目的のウィンドウのハンドル
  HACCEL hAccTable,  // アクセラレータテーブルのハンドル
  LPMSG lpMsg        // メッセージ情報
);

パラメータ

hWnd
[入力]変換後のメッセージを受け取るウィンドウのハンドルを指定します。
hAccTable
[入力]アクセラレータテーブルのハンドルを指定します。アクセラレータテーブルは、LoadAccelerators 関数を使ってロードするか、CreateAcceleratorTable 関数を使って作成しておかなければなりません。
lpMsg
[入力]GetMessage または PeekMessage 関数を使って呼び出し側のスレッドのメッセージキューから取得したメッセージ情報を保持する、 構造体へのポインタを指定します。

戻り値

関数が成功すると、0 以外の値が返ります。

関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。

解説

この関数が送信したメッセージを、メニューまたはコントロールが送信したメッセージとは区別するために、 または メッセージの wParam パラメータの上位ワードは値 1 を保持します。

ユーザーがアクセラレータキーを使って[ウィンドウ]メニュー内の項目を選択した場合、そのアクセラレータキーは WM_SYSCOMMAND メッセージへ変換されます。他のすべてのアクセラレータキーは、WM_COMMAND メッセージへ変換されます。

TranslateAccelerator 関数が 0 以外の値を返し、そのメッセージが変換された場合は、TranslateMessage 関数を使ってそのメッセージをもう一度処理するべきではありません。

すべてのメニュー項目に必ずしもアクセラレータを対応させる必要はありません。

あるメニュー項目にアクセラレータが対応している場合、ユーザーがメニューを表示したときと同様に、 メッセージと メッセージがアプリケーションへ送信されます。ただし、次のいずれかの場合にはこれらのメッセージを送信しません。

•ウィンドウが無効になっているとき

•ウィンドウが最小化されていて、アクセラレータキーが[ウィンドウ]メニューの項目に対応していないとき

•マウスのキャプチャが有効になっているとき。詳細については、SetCapture 関数を参照

指定されたウィンドウがアクティブウィンドウであり、どのウィンドウにもキーボードフォーカスが割り当てられていない場合( 一般的に、ウィンドウが最小化されている場合に該当します)、TranslateAccelerator WM_KEYUP WM_KEYDOWN の各メッセージではなく、WM_SYSKEYUP WM_SYSKEYDOWN の各メッセージを変換します。

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

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用
Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

CreateAcceleratorTable, GetMessage, LoadAccelerators, , PeekMessage, SetCapture, TranslateMessage, , , , , ,

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker