ボタンのツールヒントを表示する方法

TBSTYLE_TOOLTIPS スタイルを指定すると、ツール バーはヒント コントロールを作成して管理します。 ヒント コントロールは表示されていませんが、ユーザーがマウス ポインターをツール バーのボタンの上に移動して約 1 秒間そのまま留めておいたときにのみ表示されます。

アプリケーションは、以下のいずれかの方法でヒント コントロールにテキストを提供できます。

  • 各ボタンの TBBUTTON 構造体の iString メンバーとして、ヒント テキストを設定します。 ヒントとしてではなくボタンのラベルとしてテキストが表示されないように、TB_SETMAXTEXTROWS メッセージを送信して、テキストの最大行数を 0 に設定する必要もあります。
  • TBSTYLE_LIST スタイルを設定してツール バーを作成してから、TBSTYLE_EX_MIXEDBUTTONS 拡張スタイルを設定します。 ラベルは、BTNS_SHOWTEXT スタイルが設定されているボタンに対してのみ表示されます。 このスタイルが設定されていないボタンでは、ボタン テキストを含むヒントが表示されます。
  • TTN_GETDISPINFO 通知コードに応答します。
  • TBN_GETINFOTIP 通知コードに応答します。

ヒント コントロールにメッセージを直接送信する必要があるアプリケーションでは、TB_GETTOOLTIPS メッセージを使用して、コントロールのハンドルを取得できます。 アプリケーションは、TB_SETTOOLTIPS メッセージを使用することで、ツール バーのヒント コントロールを別のヒント コントロールで置き換えることができます。

ヒント テキストを提供するうえで最も柔軟性の高い方法は、ツール バー コントロールからその親に対して WM_NOTIFY メッセージの形式で送信される、TTN_GETDISPINFO 通知コードまたは TBN_GETINFOTIP 通知コードに応答する方法です。 TTN_GETDISPINFO の場合、lParam パラメーターに、NMTTDISPINFO 構造体 (LPTOOLTIPTEXT としても定義される) へのポインターが含まれます。この構造体により、ヘルプ テキストが必要なボタンのコマンド識別子が指定されます。 この識別子は、NMTTDISPINFO.hdr.idFrom メンバーに格納されます。 アプリケーションは、ヘルプ テキストを構造体にコピーするか、ヘルプ テキストを含む文字列のアドレスを指定するか、または文字列リソースのインスタンス ハンドルとリソース識別子を指定することができます。

知っておくべきこと

テクノロジ

前提条件

  • C/C++
  • Windows ユーザー インターフェイス プログラミング

手順

ボタンのヒントを表示する

次のコード例では、リソース識別子からのテキストを提供することにより、TTN_GETDISPINFO ヒント通知コードを処理します。

case WM_NOTIFY: 
            
    switch (((LPNMHDR) lParam)->code) 
    {
    
    case TTN_GETDISPINFO: 
        { 
            LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT)lParam; 
            
            // Set the instance of the module that contains the resource.
            lpttt->hinst = g_hInst; 
            
            UINT_PTR idButton = lpttt->hdr.idFrom;
            
            switch (idButton) 
            { 
            case IDM_NEW: 
                lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_NEW); 
                break; 
                
            case IDM_OPEN: 
                lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_OPEN); 
                break; 
                
            case IDM_SAVE: 
                lpttt->lpszText = MAKEINTRESOURCE(IDS_TIPS_SAVE); 
                break; 
            } 
            
            break; 
        } 
    }
    return TRUE;

ツール バー コントロールの使用

Windows コモン コントロールのデモ (CppWindowsCommonControls)