Freigeben über


RegisterForTooltipDismissNotification-Funktion (winuser.h)

Registriert oder hebt die Registrierung von Fenstern auf, um eine Benachrichtigung zum Schließen der QuickInfo-Fenster zu erhalten.

Syntax

BOOL RegisterForTooltipDismissNotification(
  HWND                  hWnd,
  TOOLTIP_DISMISS_FLAGS tdFlags
);

Parameter

hWnd

Typ: HWND

Das Handle des Fensters, das die WM_TOOLTIPDISMISS Nachricht empfangen soll.

tdFlags

Typ: TOOLTIP_DISMISS_FLAGS

Ein -Wert der -Enumeration, der angibt, ob die Funktion das Fenster registriert oder die Registrierung auf hebt. TDF_REGISTER , sich zu registrieren; TDF_UNREGISTER , um die Registrierung aufzuheben.

Rückgabewert

TRUE , wenn das Fenster erfolgreich registriert oder nicht registriert wurde; andernfalls FALSE. (Siehe Hinweise.)

Bemerkungen

Mit dieser Funktion wird der Zugriff auf QuickInfos erleichtert, indem Apps und Frameworks, die QuickInfos unterstützen, registriert und die Registrierung aufgehoben werden, um durch eine WM_TOOLTIPDISMISS Meldung benachrichtigt zu werden, wenn das System erfordert, dass alle QuickInfos geschlossen werden.

Apps sollten sich für diese Benachrichtigung jedes Mal registrieren, wenn sie eine QuickInfo anzeigen und ihre QuickInfos als Reaktion auf eine WM_TOOLTIPDISMISS Nachricht ausblenden. Wenn eine QuickInfo aus einem anderen Grund ausgeblendet wird, z. B. aus einer Mausaktion, sollte die Registrierung der App aufgehoben werden.

Systemdefinierte Trigger für das Entfernen von QuickInfos umfassen eine einzelne STRG-TASTE nach oben oder STRG+UMSCHALT+F10. (Der Satz von Triggern kann sich im Laufe der Zeit ändern.)

Die Funktion übernimmt entweder den HWND eines QuickInfofensters oder den HWND eines App-Fensters mit untergeordneten QuickInfos.

  • Wenn eine QuickInfo-HWND selbst registriert ist, wird erwartet, dass sich das QuickInfo-Fenster beim Anzeigen registriert und geschlossen wird, sobald eine WM_TOOLTIPDISMISS Nachricht empfangen wird.
  • Wenn sich eine App-HWND im Namen ihrer QuickInfos registriert, wird erwartet, dass sich das App-Fenster beim Anzeigen von QuickInfos registriert und alle QuickInfos beim Empfang einer WM_TOOLTIPDISMISS-Nachricht verwirf.

Es wird erwartet, dass QuickInfo- oder App-Fenster die Funktion aufrufen, um sich jedes Mal zu registrieren, wenn QuickInfos angezeigt werden. Registrierte Fenster werden beim Veröffentlichen von WM_TOOLTIPDISMISS automatisch nicht registriert.

Das flag TDF_UNREGISTER wird verwendet, um die Registrierung eines Fensters explizit aufzuheben, wenn ein QuickInfo-Fenster durch Anwendungs- oder Frameworkvorrechte geschlossen wird (z. B. das Verschieben des Cursors aus der "sicheren Zone"). Wenn eine App oder ein Framework mit TDF_UNREGISTER aufruftRegisterForTooltipDismissNotification, nachdem die Registrierung des Fensters automatisch aufgehoben wurde, gibt die Funktion FALSE zurück. Es gibt keine Auswirkungen auf zukünftige Registrierungen.

Rückgabewerte

Der an die Funktion übergebene HWND muss sich im Besitz des aufrufenden Prozesses befinden. Andernfalls gibt die Funktion FALSE zurück.

Beim Aufruf mit TDF_REGISTER und einem Fenster, das zum aufrufenden Prozess gehört, gibt die Funktion TRUE zurück, wenn das Fenster erfolgreich registriert wurde, oder FALSE , wenn das Fenster bereits registriert wurde. Das Fenster wird in beiden Richtungen als registriert behandelt.

Bei Aufruf mit TDF_UNREGISTER und einem Fenster, das zum aufrufenden Prozess gehört, gibt die Funktion TRUE zurück, wenn die Registrierung des Fensters erfolgreich aufgehoben wurde, oder FALSE , wenn die Fenster derzeit nicht registriert wurden. Das Fenster wird in beiden Richtungen als nicht registriert behandelt.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 11 Build 22621
Zielplattform Windows
Kopfzeile winuser.h
Bibliothek user32.lib

Weitere Informationen

QuickInfo

Beispiele

// 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; 
}