Fonction CallWindowProcA (winuser.h)
Transmet les informations de message à la procédure de fenêtre spécifiée.
Syntaxe
LRESULT CallWindowProcA(
[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
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
Référence