次の方法で共有


RegisterForTooltipDismissNotification 関数 (winuser.h)

ツールヒント ウィンドウを閉じる通知を受け取るウィンドウを登録または登録解除します。

構文

BOOL RegisterForTooltipDismissNotification(
  HWND                  hWnd,
  TOOLTIP_DISMISS_FLAGS tdFlags
);

パラメーター

hWnd

型: HWND

WM_TOOLTIPDISMISS メッセージを受信するウィンドウのハンドル。

tdFlags

種類: TOOLTIP_DISMISS_FLAGS

関数がウィンドウを登録または登録解除するかどうかを指定する 列挙の値。 登録するTDF_REGISTER登録 を解除するTDF_UNREGISTER。

戻り値

ウィンドウ が正常に登録または登録解除された場合は TRUE。それ以外の場合は FALSE。 (「解説」を参照してください。)

解説

この関数を使用すると、ツールヒントをサポートするアプリやフレームワークで、表示されているすべてのツールヒントを無視する必要がある場合に 、WM_TOOLTIPDISMISS メッセージで登録と登録解除の通知を受け取ることができるので、ツールヒントのアクセシビリティが向上します。

アプリは、ツールヒントを表示するたびにこの通知に登録し、 WM_TOOLTIPDISMISS メッセージに応答してツールヒントを非表示にする必要があります。 マウス アクションなど、何らかの理由でツールヒントが非表示になっている場合、アプリは登録を解除する必要があります。

ツールヒントの非表示のシステム定義トリガーには、単一 Ctrl キーまたは Ctrl + Shift + F10 キーが含まれます。 (トリガーのセットは、時間の経過と同時に変更される可能性があります)。

関数は、ツールヒント ウィンドウの HWND または子ツールヒントを含むアプリ ウィンドウの HWND を受け取ります。

  • ツールヒント HWND 自体が登録されている場合、ツールヒント ウィンドウは、表示時に登録され、 WM_TOOLTIPDISMISS メッセージを受信すると閉じる必要があります。
  • アプリ HWND がツールヒントの代わりに登録した場合、アプリのウィンドウはツールヒントを表示したときに登録され、 WM_TOOLTIPDISMISS メッセージを受信したときにすべてのツールヒントを無視することが想定されます。

ツールヒントまたはアプリ ウィンドウでは、ツールヒントが表示されるたびに関数を呼び出して登録する必要があります。 登録されたウィンドウは、 WM_TOOLTIPDISMISS投稿時に自動的に登録解除されます。

TDF_UNREGISTER フラグは、アプリケーションまたはフレームワークの特権 ("セーフ ゾーン" からカーソルを移動するなど) によってツールヒント ウィンドウが閉じられたときに、明示的にウィンドウの登録を解除するために使用されます。 ウィンドウが自動的に登録解除された後に、アプリまたはフレームワークが TDF_UNREGISTER で を呼び出RegisterForTooltipDismissNotificationすと、関数は FALSE を返します。 今後の登録に影響はありません。

戻り値

関数に渡される HWND は、呼び出し元プロセスによって所有されている必要があります。それ以外の場合、関数は FALSE を返します

TDF_REGISTERと呼び出し元プロセスに属するウィンドウで呼び出されると、ウィンドウが正常に登録された場合は TRUE、ウィンドウが既に登録されている場合は FALSE を返します。 ウィンドウは、どちらの方法でも登録済みとして扱われます。

TDF_UNREGISTERと呼び出し元プロセスに属するウィンドウを使用して呼び出されると、ウィンドウが正常に登録解除された場合は TRUE、ウィンドウが現在登録されていない場合は FALSE を返します。 ウィンドウは、どちらの方法でも登録解除済みとして扱われます。

要件

要件
サポートされている最小のクライアント Windows 11 ビルド 22621
対象プラットフォーム Windows
ヘッダー winuser.h
Library user32.lib

こちらもご覧ください

ヒント

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