Condividi tramite


Funzione SendMessageCallbackA (winuser.h)

Invia il messaggio specificato a una finestra o a una finestra. Chiama la routine della finestra per la finestra specificata e restituisce immediatamente se la finestra appartiene a un altro thread. Dopo che la routine della finestra elabora il messaggio, il sistema chiama la funzione di callback specificata, passando il risultato dell'elaborazione del messaggio e un valore definito dall'applicazione alla funzione di callback.

Sintassi

BOOL SendMessageCallbackA(
  [in] HWND          hWnd,
  [in] UINT          Msg,
  [in] WPARAM        wParam,
  [in] LPARAM        lParam,
  [in] SENDASYNCPROC lpResultCallBack,
  [in] ULONG_PTR     dwData
);

Parametri

[in] hWnd

Tipo: HWND

Handle per la finestra la cui routine della finestra riceverà il messaggio. Se questo parametro è HWND_BROADCAST ((HWND)0xffff), il messaggio viene inviato a tutte le finestre di primo livello del sistema, incluse finestre disabilitate o invisibili, finestre sovrapposte e finestre popup; ma il messaggio non viene inviato alle finestre figlio.

[in] Msg

Tipo: UINT

Messaggio da inviare.

Per gli elenchi dei messaggi forniti dal sistema, vedere System-Defined Messaggi.

[in] wParam

Tipo: WPARAM

Informazioni aggiuntive specifiche del messaggio.

[in] lParam

Tipo: LPARAM

Informazioni aggiuntive specifiche del messaggio.

[in] lpResultCallBack

Tipo: SENDASYNCPROC

Puntatore a una funzione di callback chiamata dal sistema dopo che la routine della finestra elabora il messaggio. Per altre informazioni, vedere SendAsyncProc.

Se hWnd è HWND_BROADCAST ((HWND)0xffff), il sistema chiama SendAsyncProc funzione di callback una volta per ogni finestra di primo livello.

[in] dwData

Tipo: ULONG_PTR

Valore definito dall'applicazione a cui inviare la funzione di callback a cui punta il parametro lpCallBack.

Valore restituito

Tipo: bool

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni

Se la finestra di destinazione appartiene allo stesso thread del chiamante, la routine della finestra viene chiamata in modo sincrono e la funzione di callback viene chiamata immediatamente dopo la restituzione della routine della finestra. Se la finestra di destinazione appartiene a un thread diverso dal chiamante, la funzione di callback viene chiamata solo quando il thread chiamato SendMessageCallback chiama anche GetMessage, PeekMessageo WaitMessage.

Se si invia un messaggio nell'intervallo seguente WM_USER alle funzioni di messaggio asincrone (PostMessage, SendNotifyMessagee SendMessageCallback), i parametri del messaggio non possono includere puntatori. In caso contrario, l'operazione avrà esito negativo. Le funzioni verranno restituite prima che il thread di ricezione abbia avuto la possibilità di elaborare il messaggio e il mittente libera la memoria prima che venga usata.

Le applicazioni che devono comunicare tramite HWND_BROADCAST devono usare la funzione RegisterWindowMessage per ottenere un messaggio univoco per la comunicazione tra applicazioni.

Il sistema esegue solo il marshalling per i messaggi di sistema (quelli compresi nell'intervallo da 0 a (WM_USER-1)). Per inviare altri messaggi (quelli >= WM_USER) a un altro processo, è necessario eseguire il marshalling personalizzato.

Nota

L'intestazione winuser.h definisce SendMessageCallback come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione winuser.h (include Windows.h)
libreria User32.lib
dll User32.dll
set di API ext-ms-win-ntuser-message-l1-1-0 (introdotto in Windows 8)

Vedere anche

concettuale

messaggi e code di messaggi

PostMessage

riferimento

RegisterWindowMessage

SendAsyncProc

SendMessageCallback

SendNotifyMessage