Partager via


Fonction de rappel CBTProc

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 avant d’activer, de créer, de détruire, de réduire, d’optimiser, de déplacer ou de dimensionner une fenêtre ; avant d’exécuter une commande système ; avant de supprimer un événement de souris ou de clavier de la file d’attente de messages système ; avant de définir le focus clavier ; ou avant la synchronisation avec la file d’attente des messages système. Une application d’entraînement basé sur l’ordinateur (CBT) utilise cette procédure de raccordement pour recevoir des notifications utiles du système.

Syntaxe

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Paramètres

  • nCode [in]
    Type : int

    Code utilisé par la procédure de raccordement pour déterminer comment traiter le message. Si nCode est inférieur à zéro, la procédure de raccordement doit transmettre le message à la fonction CallNextHookEx sans traitement supplémentaire et doit retourner la valeur retournée par CallNextHookEx. Ce paramètre peut prendre les valeurs suivantes.

    Valeur Signification
    HCBT_ACTIVATE 5

    Le système est sur le point d’activer une fenêtre.

    HCBT_CLICKSKIPPED 6

    Le système a supprimé un message de souris de la file d’attente des messages système. Lors de la réception de ce code de raccordement, une application CBT doit installer une procédure de raccordement WH_JOURNALPLAYBACK en réponse au message de la souris.

    HCBT_CREATEWND 3

    Une fenêtre est sur le point d’être créée. Le système appelle la procédure de raccordement avant d’envoyer le message WM_CREATE ou WM_NCCREATE à la fenêtre. Si la procédure de raccordement retourne une valeur différente de zéro, le système détruit la fenêtre ; La fonction CreateWindow retourne NULL, mais le message WM_DESTROY n’est pas envoyé à la fenêtre. Si la procédure de raccordement retourne zéro, la fenêtre est créée normalement.

    Au moment de la notification HCBT_CREATEWND , la fenêtre a été créée, mais sa taille et sa position finales n’ont peut-être pas été déterminées et sa fenêtre parente n’a peut-être pas été établie. Il est possible d’envoyer des messages à la fenêtre nouvellement créée, bien qu’elle n’ait pas encore reçu WM_NCCREATE ou WM_CREATE messages. Il est également possible de modifier la position dans l’ordre de plan de la fenêtre nouvellement créée en modifiant le membre hwndInsertAfter de la structure CBT_CREATEWND .

    HCBT_DESTROYWND 4

    Une fenêtre est sur le point d’être détruite.

    HCBT_KEYSKIPPED 7

    Le système a supprimé un message clavier de la file d’attente des messages système. Lors de la réception de ce code de raccordement, une application CBT doit installer une procédure de raccordement WH_JOURNALPLAYBACK en réponse au message clavier.

    HCBT_MINMAX 1

    Une fenêtre est sur le point d’être réduite ou agrandie.

    HCBT_MOVESIZE 0

    Une fenêtre est sur le point d’être déplacée ou dimensionnée.

    HCBT_QS 2

    Le système a récupéré un message WM_QUEUESYNC de la file d’attente de messages système.

    HCBT_SETFOCUS 9

    Une fenêtre est sur le point de recevoir le focus clavier.

    HCBT_SYSCOMMAND 8

    Une commande système est sur le point d’être exécutée. Cela permet à une application CBT d’empêcher le basculement de tâche au moyen de touches d’accès rapide.

     
    • wParam [in]
      Type : WPARAM

      Dépend du paramètre nCode . Pour plus d’informations, consultez la section Notes suivante.

    • lParam [in]
      Type : LPARAM

      Dépend du paramètre nCode . Pour plus d’informations, consultez la section Notes suivante.

    Valeur retournée

    Type:****

    Type : LRESULT

    La valeur retournée par la procédure de raccordement détermine si le système autorise ou empêche l’une de ces opérations. Pour les opérations correspondant aux codes de hook CBT suivants, la valeur de retour doit être 0 pour autoriser l’opération ou 1 pour l’empêcher.

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    Pour les opérations correspondant aux codes de hook CBT suivants, la valeur de retour est ignorée.

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    Notes

    Le type HOOKPROC définit un pointeur vers cette fonction de rappel. CBTProc est un espace réservé pour le nom de fonction défini par l’application ou défini par la bibliothèque.

    La procédure de raccordement ne doit pas installer de procédure de hook WH_JOURNALPLAYBACK sauf dans les situations décrites dans la liste précédente de codes de hook.

    Une application installe la procédure de raccordement en spécifiant le type de hook WH_CBT et un pointeur vers la procédure de hook dans un appel à la fonction SetWindowsHookExA/SetWindowsHookExW .

    Le tableau suivant décrit les paramètres wParam et lParam pour chaque code de hook HCBT_ .

    Valeur wParam lParam
    HCBT_ACTIVATE Spécifie le handle de la fenêtre sur le point d’être activée. Spécifie un pointeur long vers une structure CBTACTIVATESTRUCT contenant le handle de la fenêtre active et spécifie si l’activation change en raison d’un clic de souris.
    HCBT_CLICKSKIPPED Spécifie le message de la souris supprimé de la file d’attente des messages système. Spécifie un pointeur long vers une structure MOUSEHOOKSTRUCT contenant le code de test d’accès et le handle vers la fenêtre pour laquelle le message de la souris est destiné.

    La valeur HCBT_CLICKSKIPPED est envoyée à une procédure de hook CBTProc uniquement si un hook de WH_MOUSE est installé. Pour obtenir la liste des codes de test d’accès, consultez WM_NCHITTEST.

    HCBT_CREATEWND Spécifie le handle de la nouvelle fenêtre. Spécifie un pointeur long vers une structure CBT_CREATEWND contenant des paramètres d’initialisation pour la fenêtre. Les paramètres incluent les coordonnées et les dimensions de la fenêtre. En modifiant ces paramètres, une procédure de hook CBTProc peut définir la taille et la position initiales de la fenêtre.
    HCBT_DESTROYWND Spécifie le handle de la fenêtre sur le point d’être détruite. N’est pas défini et doit être défini sur zéro.
    HCBT_KEYSKIPPED Spécifie le code de clé virtuelle. Spécifie le nombre de répétitions, le code d’analyse, le code de transition de clé, l’état de clé précédent et le code de contexte. La valeur HCBT_KEYSKIPPED est envoyée à une procédure de hook CBTProc uniquement si un hook WH_KEYBOARD est installé. Pour plus d’informations, consultez WM_KEYUP ou WM_KEYDOWN.
    HCBT_MINMAX Spécifie le handle de la fenêtre en cours de réduction ou d’agrandissement. Spécifie, dans le mot d’ordre inférieur, une valeur de fenêtre d’affichage (SW_) spécifiant l’opération. Pour obtenir la liste des valeurs show-window, consultez ShowWindow. Le mot d’ordre supérieur n’est pas défini.
    HCBT_MOVESIZE Spécifie le handle vers la fenêtre à déplacer ou à dimensionr. Spécifie un pointeur long vers une structure RECT contenant les coordonnées de la fenêtre. En modifiant les valeurs dans la structure, une procédure de hook CBTProc peut définir les coordonnées finales de la fenêtre.
    HCBT_QS N’est pas défini et doit être égal à zéro. N’est pas défini et doit être égal à zéro.
    HCBT_SETFOCUS Spécifie le handle de la fenêtre qui obtient le focus clavier. Spécifie le handle vers la fenêtre qui perd le focus clavier.
    HCBT_SYSCOMMAND Spécifie une valeur de commande système (SC_) spécifiant la commande système. Pour plus d’informations sur les valeurs de commandes système, consultez WM_SYSCOMMAND. Contient les mêmes données que la valeur lParam d’un message de WM_SYSCOMMAND : si une commande de menu système est choisie avec la souris, le mot d’ordre inférieur contient la coordonnée x du curseur, en coordonnées d’écran, et le mot d’ordre supérieur contient la coordonnée y ; sinon, le paramètre n’est pas utilisé.

     

    Pour plus d’informations, consultez Événements Windows.

    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]

    En-tête

    Winuser.h (y compris Windows.h)

    Voir aussi

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    WM_SYSCOMMAND message

    Hooks