Fonction CallWindowProcW (winuser.h)

Transmet les informations de message à la procédure de fenêtre spécifiée.

Syntaxe

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

Paramètres

[in] lpPrevWndFunc

Type : WNDPROC

Procédure de fenêtre précédente. Si cette valeur est obtenue en appelant la fonction GetWindowLong avec le paramètre nIndex défini sur GWL_WNDPROC ou DWL_DLGPROC, il s’agit en fait de l’adresse d’une fenêtre ou d’une procédure de boîte de dialogue, ou d’une valeur interne spéciale significative uniquement pour CallWindowProc.

[in] hWnd

Type : HWND

Handle de la procédure de fenêtre pour recevoir le message.

[in] Msg

Type : UINT

Message.

[in] wParam

Type : WPARAM

Informations supplémentaires spécifiques au message. Le contenu de ce paramètre dépend de la valeur du paramètre Msg .

[in] lParam

Type : LPARAM

Informations supplémentaires spécifiques au message. Le contenu de ce paramètre dépend de la valeur du paramètre Msg .

Valeur retournée

Type : LRESULT

La valeur de retour spécifie le résultat du traitement du message et dépend du message envoyé.

Remarques

Utilisez la fonction CallWindowProc pour la sous-classe de fenêtre. En règle générale, toutes les fenêtres avec la même classe partagent une procédure de fenêtre. Une sous-classe est une fenêtre ou un ensemble de fenêtres avec la même classe dont les messages sont interceptés et traités par une autre procédure de fenêtre (ou procédures) avant d’être passés à la procédure window de la classe.

La fonction SetWindowLong crée la sous-classe en modifiant la procédure de fenêtre associée à une fenêtre particulière, ce qui amène le système à appeler la nouvelle procédure de fenêtre au lieu de la précédente. Une application doit passer tous les messages non traités par la nouvelle procédure de fenêtre à la procédure de fenêtre précédente en appelant CallWindowProc. Cela permet à l’application de créer une chaîne de procédures de fenêtre.

Si STRICT est défini, le paramètre lpPrevWndFunc a le type de données WNDPROC. Le type WNDPROC est déclaré comme suit :

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

Si STRICT n’est pas défini, le paramètre lpPrevWndFunc a le type de données FARPROC. Le type FARPROC est déclaré comme suit :

int (FAR WINAPI * FARPROC) () 

En C, la déclaration FARPROC indique une fonction de rappel qui a une liste de paramètres non spécifiée. En C++, toutefois, la liste de paramètres vide dans la déclaration indique qu’une fonction n’a aucun paramètre. Cette distinction subtile peut briser le code négligent. Voici une façon de gérer cette situation :

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

Pour plus d’informations sur les fonctions déclarées avec des listes d’arguments vides, reportez-vous à The C++ Programming Language, Second Edition, de Bjarne Stroustrup.

La fonction CallWindowProc gère la conversion Unicode en ANSI. Vous ne pouvez pas tirer parti de cette conversion si vous appelez directement la procédure de fenêtre.

Exemples

Pour obtenir un exemple, consultez Sous-classer une fenêtre

Notes

L’en-tête winuser.h définit CallWindowProc comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll
Ensemble d’API ext-ms-win-ntuser-window-l1-1-4 (introduit dans Windows 10, version 10.0.14393)

Voir aussi

Conceptuel

GetWindowLong

Référence

SetClassLong

SetWindowLong

Procédures de fenêtre