Partager via


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 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 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

GetWindowLong

de référence

SetClassLong

setWindowLong

procédures de fenêtre