Condividi tramite


Funzione CallWindowProcA (winuser.h)

Passa le informazioni sul messaggio alla routine della finestra specificata.

Sintassi

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

Parametri

[in] lpPrevWndFunc

Tipo: WNDPROC

Procedura della finestra precedente. 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 finestra o di una finestra di dialogo oppure di un valore interno speciale significativo solo per CallWindowProc.

[in] hWnd

Tipo: HWND

Handle della routine della finestra per ricevere il messaggio.

[in] Msg

Tipo: UINT

Messaggio.

[in] wParam

Tipo: WPARAM

Informazioni aggiuntive specifiche del messaggio. Il contenuto di questo parametro dipende dal valore del parametro msg.

[in] lParam

Tipo: LPARAM

Informazioni aggiuntive 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.

Osservazioni

Usare la funzione CallWindowProc per la sottoclasse della finestra. In genere, tutte le finestre con la stessa classe condividono una 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 window della classe .

La funzione SetWindowLong crea la sottoclasse modificando la routine della finestra associata a una determinata finestra, causando al sistema di chiamare la nuova routine della finestra anziché quella precedente. Un'applicazione deve passare tutti i messaggi non elaborati dalla nuova routine finestra alla routine finestra precedente chiamando CallWindowProc. Ciò consente all'applicazione di creare una catena di routine finestra.

Se viene definito STRICT, il parametro lpPrevWndFunc ha il tipo di dati WNDPROC. Il tipo di 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 di 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++, Second Edition, 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.

Esempi

Per un esempio, vedere Sottoclasse 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 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-window-l1-1-4 (introdotto in Windows 10, versione 10.0.14393)

Vedere anche

concettuale

GetWindowLong

riferimento

SetClassLong

SetWindowLong

procedure finestra