Поделиться через


Метод IPreviewHandler::TranslateAccelerator (shobjidl_core.h)

Направляет обработчик предварительного просмотра на обработку нажатия клавиши, переданной из конвейера сообщений процесса, в котором выполняется обработчик предварительного просмотра.

Синтаксис

HRESULT TranslateAccelerator(
  [in] MSG *pmsg
);

Параметры

[in] pmsg

Тип: MSG*

Указатель на сообщение окна.

Возвращаемое значение

Тип: HRESULT

Если обработчик предварительного просмотра может обработать сообщение нажатия клавиши, обработчик обработает его и возвратит S_OK. Если обработчик предварительного просмотра не может обработать сообщение нажатия клавиши, он предложит его ведущему приложению с помощью TranslateAccelerator. Если узел обрабатывает сообщение, этот метод возвращает S_OK. Если узел не обрабатывает сообщение, этот метод возвращает S_FALSE.

Комментарии

Эта функция будет вызываться только из конвейера сообщений процесса, в котором запущен обработчик предварительного просмотра. Эта функция позволяет пересылать сообщения о нажатии клавиш из конвейера сообщений на узел с помощью TranslateAccelerator.

Когда обработчик предварительной версии получает сообщение (нажатие клавиши) от своего конвейера сообщений, он отвечает за его пересылку на узел.

При вызове IObjectWithSite::SetSite в обработчике предварительного просмотра передается ссылка на узел обработчика предварительного просмотра. Объект должен немедленно запрашивать объект QueryInterface этого сайта для IPreviewHandlerFrame и хранить этот указатель.

Затем обработчик предварительного просмотра может вызвать GetWindowContext , чтобы получить таблицу ускорителей для фильтрации нажатий клавиш. Затем предварительная версия может сравнивать нажатия клавиш с таблицей ускорителей с помощью IsAccelerator и вызывать только IPreviewHandler::TranslateAccelerator для нажатий клавиш, которые соответствуют. Это может привести к незначительному увеличению производительности. Обработчик предварительной версии должен освободить таблицу ускорителя с помощью функции DestroyAcceleratorTable .

Обработчик предварительного просмотра также может не использовать таблицу в целом и вызывать IPreviewHandler::TranslateAccelerator для каждого нажатия клавиш. Обратите внимание, что все обработчики предварительного просмотра, работающие в процессах с низкой целостностью, должны использовать этот метод.

При нажатии клавиши TAB, если обработчик предварительного просмотра имеет несколько табуляции, он отвечает за перемещение фокуса клавиатуры в пределах этих остановок табуляции. Если текущий фокус клавиатуры находится на одной из этих табуляциях и перемещение фокуса клавиатуры приведет к его перемещению на другую остановку табуляции средства предварительного просмотра, средство предварительного просмотра должно вызвать SetFocus при следующей позиции табуляции. В противном случае клавишу TAB следует перенаправить в узел для обработки табуляции из средства предварительного просмотра.

Требования

   
Минимальная версия клиента Windows Vista, Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)
Распространяемые компоненты Windows Search 4 или более поздней версии