Condividi tramite


Metodo IOleInPlaceObjectWindowless::OnWindowMessage (ocidl.h)

Invia un messaggio da un contenitore a un oggetto senza finestra attivo sul posto.

Sintassi

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

Parametri

[in] msg

Identificatore del messaggio della finestra fornito al contenitore da Windows.

[in] wParam

Parametro per il messaggio della finestra fornito al contenitore da Windows.

[in] lParam

Parametro per il messaggio della finestra fornito al contenitore da Windows.

[out] plResult

Puntatore al codice di risultato per il messaggio della finestra.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Gli altri valori restituiti possibili includono i seguenti:

Codice restituito Descrizione
S_FALSE
L'oggetto senza finestra non ha elaborato il messaggio della finestra. Il contenitore deve chiamare DefWindowProc per il messaggio o elaborare il messaggio stesso, come descritto di seguito.

Commenti

Un contenitore chiama questo metodo per inviare messaggi di finestra a un oggetto senza finestra attivo sul posto. Il contenitore deve inviare messaggi in base alle linee guida seguenti:

Per i messaggi seguenti, il contenitore deve prima inviare il messaggio all'oggetto senza finestra che ha acquisito il mouse, se presente. In caso contrario, il contenitore deve inviare il messaggio all'oggetto senza finestra sotto il cursore del mouse. Se non esiste alcun oggetto di questo tipo, il contenitore è libero di elaborare i messaggi seguenti per se stesso:

  • WM_MOUSEMOVE
  • WM_SETCURSOR
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
Il contenitore deve inviare il messaggio all'oggetto senza finestra con lo stato attivo della tastiera per i messaggi seguenti:
  • WM_CANCELMODE
  • WM_CHAR
  • WM_DEADCHAR
  • WM_HELP
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_SYSDEADCHAR
  • WM_SYSKEYDOWN
  • WM_SYSKEYUP
Per tutti gli altri messaggi, il contenitore deve elaborare il messaggio autonomamente.

L'oggetto senza finestra può restituire S_FALSE a questo metodo per indicare che non ha elaborato il messaggio. Il contenitore esegue quindi il comportamento predefinito per il messaggio chiamando la funzione DefWindowProc oppure elabora il messaggio stesso.

Il contenitore deve passare i messaggi della finestra seguenti alla procedura di finestra predefinita:

  • WM_CHAR
  • WM_DEADCHAR
  • WM_IMExxx
  • WM_KEYDOWN
  • WM_KEYUP
  • WM_MOUSEMOVE
  • WM_SYSCHAR
  • WM_SYSDEADCHAR
  • WM_SYSKEYUP
  • WM_XBUTTONDOWN
  • WM_XBUTTONUP
  • WM_XBUTTONDBLCLK
Il contenitore deve elaborare i messaggi della finestra seguenti come propri:
  • WM_CONTEXTMENU
  • WM_HELP
  • WM_SETCURSOR
Nota Per WM_SETCURSOR, il contenitore può impostare il cursore stesso o non eseguire alcuna operazione.
 
Gli oggetti possono anche usare IOleInPlaceSiteWindowless::OnDefWindowMessage per richiamare in modo esplicito l'elaborazione dei messaggi predefinita dal contenitore. Nel caso del messaggio di WM_SETCURSOR, questo consente a un oggetto di intervenire se il contenitore non imposta il cursore.

Tutte le coordinate passate all'oggetto in wParam e lParam vengono specificate come coordinate client della finestra contenitore.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ocidl.h

Vedi anche