IPreviewHandler::TranslateAccelerator メソッド (shobjidl_core.h)

プレビュー ハンドラーが実行されているプロセスのメッセージ ポンプから渡されたキーストロークを処理するようにプレビュー ハンドラーに指示します。

構文

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

パラメーター

[in] pmsg

種類: MSG*

ウィンドウ メッセージへのポインター。

戻り値

種類: HRESULT

キーストローク メッセージをプレビュー ハンドラーで処理できる場合、ハンドラーはそれを処理し、 S_OKを返します。 プレビュー ハンドラーがキーストローク メッセージを処理できない場合は、 TranslateAccelerator を使用してホストに提供されます。 ホストがメッセージを処理する場合、このメソッドは S_OKを返します。 ホストがメッセージを処理しない場合、このメソッドは S_FALSEを返します。

解説

この関数は、プレビュー ハンドラーが実行されているプロセスのメッセージ ポンプからのみ呼び出されます。 この関数を使用すると、 TranslateAccelerator を使用して、メッセージ ポンプからホストにキーストローク メッセージを転送できます。

プレビュー ハンドラーは、メッセージ ポンプからメッセージ (キーストローク) を受信すると、そのメッセージをホストに転送する役割を担います。

プレビュー ハンドラーで IObjectWithSite::SetSite が呼び出されると、プレビュー ハンドラーのホストへの参照が渡されます。 オブジェクトは、IPreviewHandlerFrame のサイトを直ちに QueryInterface し、そのポインターを格納する必要があります。

その後、プレビュー ハンドラーには、キーストロークをフィルター処理するアクセラレータ テーブルを取得するために GetWindowContext を呼び出すオプションがあります。 プレビューでは、 IsAccelerator を使用してそのアクセラレータ テーブルとキーストロークを比較し、一致するキーストロークに対してのみ IPreviewHandler::TranslateAccelerator を呼び出すことができます。 これにより、パフォーマンスが適度に向上する可能性があります。 プレビュー ハンドラーは、 DestroyAcceleratorTable 関数を使用してアクセラレータ テーブルを解放する必要があります。

また、プレビュー ハンドラーがテーブルを完全に使用しないようにし、すべてのキーストロークに対して IPreviewHandler::TranslateAccelerator を呼び出すこともできます。 整合性の低いプロセスで実行されているすべてのプレビュー ハンドラーでは、このメソッドを使用する必要があることに注意してください。

タブ キーを押すと、プレビュー ハンドラーに複数のタブ位置がある場合は、それらのタブ位置内でキーボード フォーカスを移動します。 現在のキーボード フォーカスがタブストップの 1 つにあり、キーボード フォーカスを進めると別のプレビューアータブストップに移動する場合、プレビューアーは次のタブストップで SetFocus を呼び出す必要があります。 それ以外の場合は、プレビューアーからタブ移動を処理するために、タブ キーをホストに転送する必要があります。

要件

   
サポートされている最小のクライアント Windows Vista、Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)
再頒布可能パッケージ Windows Search 4 以降