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 window 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 disattivate 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 Messaggi definiti dal sistema.

[in] wParam

Tipo: WPARAM

Ulteriori informazioni specifiche del messaggio.

[in] lParam

Tipo: LPARAM

Ulteriori informazioni specifiche del messaggio.

[in] lpResultCallBack

Tipo: SENDASYNCPROC

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

Se hWnd è HWND_BROADCAST ((HWND)0xffff), il sistema chiama la funzione di callback SendAsyncProc 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 informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

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 che ha chiamato SendMessageCallback chiama anche GetMessage, PeekMessage o WaitMessage.

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

Le applicazioni che devono comunicare usando 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 inclusi 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 che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

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 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)

Vedi anche

Informazioni concettuali

Messaggi e code di messaggi

PostMessage

Riferimento

RegisterWindowMessage

SendAsyncProc

SendMessageCallback

SendNotifyMessage