Fonction MessageProc
Description
Fonction de rappel définie par l’application ou définie par la bibliothèque utilisée avec la fonction SetWindowsHookExW/SetWindowsHookExW . Le système appelle cette fonction après qu’un événement d’entrée se produit dans une boîte de dialogue, une boîte de message, un menu ou une barre de défilement, mais avant le traitement du message généré par l’événement d’entrée. La procédure de raccordement peut surveiller les messages d’une boîte de dialogue, d’une boîte de message, d’un menu ou d’une barre de défilement créée par une application particulière ou toutes les applications.
Le type HOOKPROC définit un pointeur vers cette fonction de rappel. MessageProc est un espace réservé pour le nom de fonction défini par l’application ou défini par la bibliothèque.
LRESULT CALLBACK MessageProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Paramètres
code [in]
Type : int
Type d’événement d’entrée qui a généré le message.
Si le code est inférieur à zéro, la procédure de hook doit passer le message à la fonction CallNextHookEx sans traitement supplémentaire et retourner la valeur retournée par CallNextHookEx.
Ce paramètre peut prendre les valeurs suivantes.
Valeur | Signification |
---|---|
0x8001 MSGF_DDEMGR | L’événement d’entrée s’est produit alors que la bibliothèque de gestion DDEML (Dynamic Data Exchange Management Library) attendait la fin d’une transaction synchrone. Pour plus d’informations sur DDEML, consultez Bibliothèque de gestion Dynamic Data Exchange. |
MSGF_DIALOGBOX 0 | L’événement d’entrée s’est produit dans une boîte de message ou une boîte de dialogue. |
MSGF_MENU 2 | L’événement d’entrée s’est produit dans un menu. |
MSGF_SCROLLBAR 5 | L’événement d’entrée s’est produit dans une barre de défilement. |
wParam
Type : WPARAM
Ce paramètre n'est pas utilisé.
lParam [in]
Type : LPARAM
Pointeur vers une structure MSG .
Retours
Type : LRESULT
Si le code est inférieur à zéro, la procédure de raccordement doit retourner la valeur retournée par CallNextHookEx.
Si le code est supérieur ou égal à zéro et que la procédure de hook n’a pas traiter le message, il est vivement recommandé d’appeler CallNextHookEx et de retourner la valeur qu’il retourne ; dans le cas contraire, d’autres applications qui ont installé des hooks WH_MSGFILTER ne recevront pas de notifications de hook et risquent de se comporter de manière incorrecte. Si la procédure de raccordement a traité le message, elle peut retourner une valeur différente de zéro pour empêcher le système de transmettre le message au reste de la chaîne de raccordement ou à la procédure de fenêtre cible.
Notes
Une application installe la procédure de raccordement en spécifiant le type de hook WH_MSGFILTER et un pointeur vers la procédure de hook dans un appel à la fonction SetWindowsHookExA/SetWindowsHookExW .
Si une application qui utilise le DDEML et effectue des transactions synchrones doit traiter les messages avant qu’ils ne soient distribués, elle doit utiliser le hook WH_MSGFILTER .