Funzione CallWindowProcW (winuser.h)

Passa le informazioni sul messaggio alla routine della finestra specificata.

Sintassi

LRESULT CallWindowProcW(
  [in] WNDPROC lpPrevWndFunc,
  [in] HWND    hWnd,
  [in] UINT    Msg,
  [in] WPARAM  wParam,
  [in] LPARAM  lParam
);

Parametri

[in] lpPrevWndFunc

Tipo: WNDPROC

Procedura precedente della finestra. Se questo valore viene ottenuto chiamando la funzione GetWindowLong con il parametro nIndex impostato su GWL_WNDPROC o DWL_DLGPROC, si tratta effettivamente dell'indirizzo di una routine finestra o finestra di dialogo o di un valore interno speciale significativo solo per CallWindowProc.

[in] hWnd

Tipo: HWND

Handle per la routine della finestra per ricevere il messaggio.

[in] Msg

Tipo: UINT

Messaggio.

[in] wParam

Tipo: WPARAM

Ulteriori informazioni specifiche del messaggio. Il contenuto di questo parametro dipende dal valore del parametro Msg .

[in] lParam

Tipo: LPARAM

Ulteriori informazioni specifiche del messaggio. Il contenuto di questo parametro dipende dal valore del parametro Msg .

Valore restituito

Tipo: LRESULT

Il valore restituito specifica il risultato dell'elaborazione del messaggio e dipende dal messaggio inviato.

Commenti

Usare la funzione CallWindowProc per la sottoclasse della finestra. In genere, tutte le finestre con la stessa classe condividono una sola routine finestra. Una sottoclasse è una finestra o un set di finestre con la stessa classe i cui messaggi vengono intercettati ed elaborati da un'altra routine finestra (o routine) prima di essere passata alla routine finestra della classe .

La funzione SetWindowLong crea la sottoclasse modificando la routine della finestra associata a una determinata finestra, determinando che il sistema chiami la nuova routine finestra anziché quella precedente. Un'applicazione deve passare tutti i messaggi non elaborati dalla nuova procedura della finestra alla routine della finestra precedente chiamando CallWindowProc. In questo modo l'applicazione può creare una catena di procedure finestra.

Se è definito STRICT , il parametro lpPrevWndFunc ha il tipo di dati WNDPROC. Il tipo WNDPROC viene dichiarato come segue:

LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM); 

Se STRICT non è definito, il parametro lpPrevWndFunc ha il tipo di dati FARPROC. Il tipo FARPROC viene dichiarato come segue:

int (FAR WINAPI * FARPROC) () 

In C la dichiarazione FARPROC indica una funzione di callback con un elenco di parametri non specificato. In C++, tuttavia, l'elenco di parametri vuoto nella dichiarazione indica che una funzione non ha parametri. Questa sottile distinzione può interrompere il codice senza attenzione. Di seguito è riportato un modo per gestire questa situazione:

#ifdef STRICT 
  WNDPROC MyWindowProcedure 
#else 
  FARPROC MyWindowProcedure 
#endif 
... 
  lResult = CallWindowProc(MyWindowProcedure, ...) ; 

Per altre informazioni sulle funzioni dichiarate con elenchi di argomenti vuoti, vedere Linguaggio di programmazione C++, Seconda edizione, di Bjarne Stroustrup.

La funzione CallWindowProc gestisce la conversione da Unicode a ANSI. Non è possibile sfruttare questa conversione se si chiama direttamente la routine della finestra.

Esempio

Per un esempio, vedere Creazione di sottoclassi di una finestra

Nota

L'intestazione winuser.h definisce CallWindowProc 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

   
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-window-l1-1-4 (introdotto in Windows 10 versione 10.0.14393)

Vedi anche

Informazioni concettuali

GetWindowLong

Riferimento

SetClassLong

Setwindowlong

Procedure finestra