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


Метод IOleInPlaceFrame::TranslateAccelerator (oleidl.h)

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

Синтаксис

HRESULT TranslateAccelerator(
  [in] LPMSG lpmsg,
  [in] WORD  wID
);

Параметры

[in] lpmsg

Указатель на структуру MSG , содержащую сообщение о нажатии клавиши.

[in] wID

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

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

Этот метод возвращает значение S_OK при успешном завершении. Другие возможные возвращаемые значения включают следующее.

Код возврата Описание
S_FALSE
Нажатие клавиши не использовалось.
E_INVALIDARG
Указанный указатель недопустим.
E_UNEXPECTED
Произошла непредвиденная ошибка.

Комментарии

Примечания к вызывающим абонентам

Метод IOleInPlaceFrame::TranslateAccelerator вызывается косвенно OleTranslateAccelerator при получении ускорителя нажатия клавиш, предназначенного для контейнера (кадра).

Примечания для разработчиков

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

Объекты на месте должны иметь первый шанс на перевод сообщений акселератора. Однако поскольку объекты, реализованные приложениями-объектами DLL, не имеют собственного конвейера сообщений, они получают сообщения из очереди сообщений контейнера. Чтобы убедиться, что объект имеет первый шанс на перевод сообщений, контейнер должен всегда вызывать IOleInPlaceFrame::TranslateAccelerator перед выполнением собственного преобразования ускорителя. И наоборот, приложение исполняемого объекта должно вызывать OleTranslateAccelerator после вызова TranslateAccelerator, вызывая TranslateMessage и DispatchMessage только в том случае, если обе функции перевода завершаются ошибкой.

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

"char", wID, VIRTKEY, CONTROL

Это наиболее распространенный способ описания ускорителей клавиатуры. Невыполнение этого действия может привести к потере нажатий клавиш или отправке в неправильный объект во время сеанса на месте.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header oleidl.h

См. также раздел

IOleInPlaceFrame

IOleInPlaceFrame::TranslateAccelerator

OleTranslateAccelerator

TranslateAccelerator

TranslateMDISysAccel