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 以降 |