Método IOleInPlaceObjectWindowless::OnWindowMessage (ocidl.h)

Envía un mensaje de un contenedor a un objeto sin ventanas que está activo en contexto.

Sintaxis

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

Parámetros

[in] msg

Identificador del mensaje de ventana proporcionado al contenedor por Windows.

[in] wParam

Parámetro para el mensaje de ventana proporcionado al contenedor por Windows.

[in] lParam

Parámetro para el mensaje de ventana proporcionado al contenedor por Windows.

[out] plResult

Puntero al código de resultado del mensaje de la ventana.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
S_FALSE
El objeto sin ventana no procesó el mensaje de la ventana. El contenedor debe llamar a DefWindowProc para el mensaje o procesar el propio mensaje como se describe a continuación.

Comentarios

Un contenedor llama a este método para enviar mensajes de ventana a un objeto sin ventanas activo. El contenedor debe enviar mensajes según las siguientes directrices:

Para los siguientes mensajes, el contenedor primero debe enviar el mensaje al objeto sin ventana que ha capturado el mouse, si existe. De lo contrario, el contenedor debe enviar el mensaje al objeto sin ventana bajo el cursor del mouse. Si no hay ningún objeto de este tipo, el contenedor puede procesar los siguientes mensajes por sí mismo:

  • WM_MOUSEMOVE
  • WM_SETCURSOR
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
El contenedor debe enviar el mensaje al objeto sin ventanas con el foco del teclado para los siguientes mensajes:
  • WM_CANCELMODE
  • WM_CHAR
  • WM_DEADCHAR
  • WM_HELP
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_SYSDEADCHAR
  • WM_SYSKEYDOWN
  • WM_SYSKEYUP
Para todos los demás mensajes, el contenedor debe procesar el mensaje por sí mismo.

El objeto sin ventana puede devolver S_FALSE a este método para indicar que no procesó el mensaje. A continuación, el contenedor realiza el comportamiento predeterminado del mensaje llamando a la función DefWindowProc o procesa el propio mensaje.

El contenedor debe pasar los siguientes mensajes de ventana al procedimiento de ventana predeterminado:

  • WM_CHAR
  • WM_DEADCHAR
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_MOUSEMOVE
  • WM_SYSCHAR
  • WM_SYSDEADCHAR
  • WM_SYSKEYUP
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
El contenedor debe procesar los siguientes mensajes de ventana como propios:
  • WM_CONTEXTMENU
  • WM_HELP
  • WM_SETCURSOR
Nota Para WM_SETCURSOR, el contenedor puede establecer el propio cursor o no hacer nada.
 
Los objetos también pueden usar IOleInPlaceSiteWindowless::OnDefWindowMessage para invocar explícitamente el procesamiento de mensajes predeterminado desde el contenedor. En el caso del mensaje de WM_SETCURSOR, esto permite que un objeto tome medidas si el contenedor no establece el cursor.

Todas las coordenadas pasadas al objeto en wParam y lParam se especifican como coordenadas de cliente de la ventana contenedora.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ocidl.h

Consulte también