IOleInPlaceFrame::TranslateAccelerator メソッド (oleidl.h)
オブジェクトが所定の位置でアクティブになっている間に、コンテナーのフレーム用のアクセラレータ キーストロークを変換します。
構文
HRESULT TranslateAccelerator(
[in] LPMSG lpmsg,
[in] WORD wID
);
パラメーター
[in] lpmsg
キーストローク メッセージを含む MSG 構造体へのポインター。
[in] wID
コンテナー指定のアクセラレータ テーブルのキーストロークに対応するコマンド識別子の値。 コンテナーでは、もう一度変換するのではなく、この値を使用する必要があります。
戻り値
このメソッドは、成功したS_OKを返します。 その他の可能な戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
キーストロークは使用されませんでした。 |
|
指定されたポインターが無効です。 |
|
予期しないエラーが発生しました。 |
解説
呼び出し元へのメモ
コンテナー (フレーム) 用のキーストローク アクセラレータを受信すると、 IOleInPlaceFrame::TranslateAccelerator メソッドは OleTranslateAccelerator によって間接的に呼び出されます。実装者へのメモ
コンテナー アプリケーションは、通常のアクセラレータ処理を実行するか、 wID を 直接使用して、キーストローク アクセラレータが処理されたかどうかを示す を返す必要があります。 コンテナーが MDI アプリケーションであり、 TranslateAccelerator 関数が失敗した場合、コンテナーは通常のメッセージ処理と同様に TranslateMDISysAccel 関数を呼び出すことができます。インプレース オブジェクトには、最初にアクセラレータ メッセージを翻訳する機会を与える必要があります。 ただし、DLL オブジェクト アプリケーションによって実装されるオブジェクトには独自のメッセージ ポンプがないため、コンテナーのメッセージ キューからメッセージを受信します。 オブジェクトが最初にメッセージを翻訳する機会を確保するために、コンテナーは、独自のアクセラレータ変換を実行する前に、常に IOleInPlaceFrame::TranslateAccelerator を呼び出す必要があります。 逆に、実行可能オブジェクト アプリケーションでは、TranslateAccelerator を呼び出した後に OleTranslateAccelerator を呼び出し、両方の変換関数が失敗した場合にのみ TranslateMessage と DispatchMessage を呼び出す必要があります。
コンテナーのアクセラレータ テーブルを定義して、独自のアクセラレータ キーストローク変換を行うオブジェクト アプリケーションで適切に動作するようにする必要があります。 テーブルは次のように定義する必要があります。
"char", wID, VIRTKEY, CONTROL
これは、キーボード アクセラレータを記述する最も一般的な方法です。 これを行わないと、インプレース セッション中にキーストロークが失われたり、間違ったオブジェクトに送信されたりする可能性があります。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | oleidl.h |