Метод 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 или более поздней версии |