CallWindowProcA, fonction (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 aux messages. Le contenu de ce paramètre dépend de la valeur du paramètre Msg.
[in] lParam
Type : LPARAM
Informations supplémentaires spécifiques aux messages. Le contenu de ce paramètre dépend de la valeur du paramètre Msg.
Valeur de retour
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 transmis à la procédure fenêtre 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 entraîne l’appel de la nouvelle procédure de fenêtre au lieu de la procédure précédente. Une application doit transmettre 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 lpPrevWndFun c a le type de données WNDPROC. Le type WNDPROC est déclaré comme suit :
LRESULT (CALLBACK* WNDPROC) (HWND, UINT, WPARAM, LPARAM);
Si
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 insouciant. Voici un moyen 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 à Langage de programmation C++, Second Edition, par Bjarne Stroustrup.
La fonction CallWindowProc gère la conversion Unicode vers 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-classe d’une fenêtre
Note
L’en-tête winuser.h définit CallWindowProc comme 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winuser.h (include 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
conceptuelle
de référence