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


Метод IOleInPlaceObjectWindowless::OnWindowMessage (ocidl.h)

Отправляет сообщение из контейнера в активный объект без окон.

Синтаксис

HRESULT OnWindowMessage(
  [in]  UINT    msg,
  [in]  WPARAM  wParam,
  [in]  LPARAM  lParam,
  [out] LRESULT *plResult
);

Параметры

[in] msg

Идентификатор сообщения окна, предоставленного контейнеру Windows.

[in] wParam

Параметр для сообщения окна, предоставленного контейнеру Windows.

[in] lParam

Параметр для сообщения окна, предоставленного контейнеру Windows.

[out] plResult

Указатель на код результата для сообщения окна.

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

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

Код возврата Описание
S_FALSE
Объект без окна не обработал сообщение окна. Контейнер должен вызвать DefWindowProc для сообщения или обработать само сообщение, как описано ниже.

Комментарии

Контейнер вызывает этот метод для отправки сообщений окна в активный объект без окон. Контейнер должен отправлять сообщения в соответствии со следующими рекомендациями:

Для следующих сообщений контейнер должен сначала отправить сообщение в объект без окна, который захватил мышь, если таковой имеется. В противном случае контейнер должен отправить сообщение объекту без окна под курсором мыши. Если такого объекта нет, контейнер может обрабатывать следующие сообщения для себя:

  • WM_MOUSEMOVE
  • WM_SETCURSOR
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
Контейнер должен отправить сообщение в объект без окон с фокусом клавиатуры для следующих сообщений:
  • WM_CANCELMODE
  • WM_CHAR
  • WM_DEADCHAR
  • WM_HELP
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_SYSDEADCHAR
  • WM_SYSKEYDOWN
  • WM_SYSKEYUP
Для всех остальных сообщений контейнер должен обработать сообщение самостоятельно.

Объект без окна может возвращать S_FALSE в этот метод, чтобы указать, что он не обработал сообщение. Затем контейнер выполняет поведение по умолчанию для сообщения, вызывая функцию DefWindowProc , или обрабатывает само сообщение.

Контейнер должен передать следующие сообщения окна в процедуру по умолчанию:

  • WM_CHAR
  • WM_DEADCHAR
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_MOUSEMOVE
  • WM_SYSCHAR
  • WM_SYSDEADCHAR
  • WM_SYSKEYUP
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
Контейнер должен обрабатывать следующие сообщения окна как собственные:
  • WM_CONTEXTMENU
  • WM_HELP
  • WM_SETCURSOR
Примечание Для WM_SETCURSOR контейнер может либо задать сам курсор, либо ничего не делать.
 
Объекты также могут использовать IOleInPlaceSiteWindowless::OnDefWindowMessage для явного вызова обработки сообщений по умолчанию из контейнера. В случае сообщения WM_SETCURSOR это позволяет объекту выполнить действие, если контейнер не устанавливает курсор.

Все координаты, передаваемые объекту в wParam и lParam , указываются как клиентские координаты содержащего окна.

Требования

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

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