Fonction RegisterForTooltipDismissNotification (winuser.h)

Inscrit ou annule l’inscription des fenêtres pour recevoir une notification pour ignorer leurs fenêtres d’info-bulle.

Syntaxe

BOOL RegisterForTooltipDismissNotification(
  HWND                  hWnd,
  TOOLTIP_DISMISS_FLAGS tdFlags
);

Paramètres

hWnd

Type : HWND

Handle de la fenêtre pour recevoir le message WM_TOOLTIPDISMISS .

tdFlags

Type : TOOLTIP_DISMISS_FLAGS

Valeur de l’énumération qui spécifie si la fonction inscrit ou annule l’inscription de la fenêtre. TDF_REGISTER s’inscrire ; TDF_UNREGISTER désinscrire.

Valeur retournée

TRUE si la fenêtre a été inscrite ou non inscrite ; sinon, FALSE. (Consultez la section Notes.)

Notes

Cette fonction rend les info-bulles plus accessibles en permettant aux applications et aux frameworks qui prennent en charge les info-bulles d’inscription et de désinscription d’être averties par un message WM_TOOLTIPDISMISS lorsque le système exige que toutes les info-bulles affichant soient ignorées.

Les applications doivent s’inscrire à cette notification chaque fois qu’elles affichent une info-bulle et masquent leurs info-bulles en réponse à un message WM_TOOLTIPDISMISS . Lorsqu’une info-bulle est masquée pour une autre raison, comme une action de souris, l’application doit se désinscrire.

Les déclencheurs définis par le système pour le licenciement de l’info-bulle incluent une touche Ctrl solitaire vers le haut ou Ctrl+Maj+F10. (L’ensemble des déclencheurs peut changer au fil du temps.)

La fonction prend le HWND d’une fenêtre d’info-bulle ou le HWND d’une fenêtre d’application qui a des info-bulles enfants.

  • Si une info-bulle HWND elle-même est inscrite, la fenêtre d’info-bulle est censée s’inscrire lors de l’affichage et de l’ignorer lors de la réception d’un message WM_TOOLTIPDISMISS .
  • Si une application HWND s’inscrit pour le compte de ses info-bulles, la fenêtre de l’application est censée s’inscrire lors de l’affichage des info-bulles et ignorer toutes ses info-bulles lors de la réception d’un message WM_TOOLTIPDISMISS .

Les fenêtres d’info-bulle ou d’application doivent appeler la fonction pour s’inscrire chaque fois que des info-bulles sont affichées. Les fenêtres inscrites sont automatiquement désinsistées lors de la publication de WM_TOOLTIPDISMISS.

L’indicateur TDF_UNREGISTER est utilisé pour annuler explicitement l’inscription d’une fenêtre lorsqu’une fenêtre d’info-bulle est ignorée par une prérogative d’application ou d’infrastructure (par exemple, le déplacement du curseur hors de la « zone sécurisée »). Si une application ou une infrastructure appelle RegisterForTooltipDismissNotification avec TDF_UNREGISTER après la désinscription automatique de la fenêtre, la fonction retourne FALSE. Il n’y a aucun impact sur les inscriptions futures.

Valeurs de retour

Le HWND transmis à la fonction doit appartenir au processus appelant ; sinon, la fonction retourne FALSE.

Lorsqu’elle est appelée avec TDF_REGISTER et une fenêtre appartenant au processus appelant, la fonction retourne TRUE si la fenêtre a été correctement inscrite ou FALSE si la fenêtre a déjà été inscrite. La fenêtre est traitée comme inscrite dans les deux sens.

Lorsqu’elle est appelée avec TDF_UNREGISTER et une fenêtre appartenant au processus appelant, la fonction retourne TRUE si la fenêtre est correctement désinscrit, ou FALSE si les fenêtres n’ont pas été actuellement inscrites. La fenêtre est traitée comme non inscrite dans les deux sens.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 11 Build 22621
Plateforme cible Windows
En-tête winuser.h
Bibliothèque user32.lib

Voir aussi

Info-bulle

Exemples

// WndProc: Window procedure for a window that is the parent of one or more 
// tooltip windows. 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    switch (message) 
    { 
    case WM_TOOLTIPDISMISS: 
        // System is asking us to dismiss tooltip window due to system hotkey. 
        if (hwndVisibleTooltip) 
        { 
            // Hide the tooltip window. Not necessary to unregister as window is 
            // automatically unregistered upon notification. 
            ShowWindow(hwndVisibleTooltip, SW_HIDE); 
            hwndVisibleTooltip = nullptr; 
        } 
        break; 
    case WM_NOTIFY: 
        { 
            LPNMHDR toolInfo = (LPNMHDR) lParam; 
            switch (toolInfo->code) 
            { 
            case TTN_SHOW: 
                // Notification that a tooltip is about to show. Register this 
                // window to receive dismiss notification when the system wants 
                // to dismiss tooltips (such as in response to a system hotkey). 
                RegisterForTooltipDismissNotification(hWnd, TDF_REGISTER); 
 
                // Remember the visible tooltip window, so we know which one to 
                // hide when we receive WM_TOOLTIPTISMISS. 
                hwndVisibleTooltip = toolInfo->hwndFrom; 
                break; 
            case TTN_POP: 
                // Notification that a tooltip is about to hide 
                if (hwndVisibleTooltip) 
                { 
                    // With the tooltip hiding, we will no longer need the system 
                    // dismiss notification, so we can unregister from it. 
                    RegisterForTooltipDismissNotification(hWnd, TDF_UNREGISTER); 
                    hwndVisibleTooltip = nullptr; 
                } 
                break; 
            default: 
                return DefWindowProc(hWnd, message, wParam, lParam); 
            } 
        } 
        break; 
    case WM_DESTROY: 
        PostQuitMessage(0); 
        break; 
    default: 
        return DefWindowProc(hWnd, message, wParam, lParam); 
    } 
    return 0; 
}