複数行のツールヒントを実装する方法

複数行のツールヒントを使用すると、複数の行にテキストを表示できます。

これらは、一般的なコントロールのバージョン 4.70 以降でサポートされています。 アプリケーションでは、表示矩形の幅を指定して、TTM_SETMAXTIPWIDTH メッセージを送信して複数行ツールヒントを作成します。 この幅を超えるテキストは、表示領域を拡大するのではなく、次の行に折り返します。 必要に応じて、追加の線に合わせて矩形の高さが増加します。 ツールヒント コントロールは行を自動的に折り返すか、キャリッジ リターン/ライン フィードの組み合わせ \r\n を使用して特定の場所で改行を強制できます。

実行後の表示は、次の図のようになります。

screen shot of a dialog box with a tooltip that contains text arranged like a multi-line paragraph

Note

NMTTDISPINFO 構造体の szText メンバーにが指定したテキスト バッファーは、80 文字のみ対応しています。 長い文字列を使用する必要がある場合は、NMTTDISPINFOlpszText メンバーを、目的のテキストを含むバッファーを指します。

 

知っておくべきこと

テクノロジ

前提条件

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

手順

複数行のツールヒントの実装

次のコード フラグメントは、単純な TTN_GETDISPINFO 通知ハンドラーの例です。 表示する矩形を 150 ピクセルに設定することで、複数行のツールヒントを有効にします。 最初の単語の後に手動の改行が挿入され、改行はハードやソフトである可能性があることを示します。

    case WM_NOTIFY:
    {
        switch (((LPNMHDR)lParam)->code)
        {
        case TTN_GETDISPINFO:
            LPNMTTDISPINFO pInfo = (LPNMTTDISPINFO)lParam;
            SendMessage(pInfo->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, 0, 150);
            wcscpy_s(pInfo->szText, ARRAYSIZE(pInfo->szText), 
                L"This\nis a very long text string " \
                L"that must be broken into several lines.");
            break;
        }
        break;
    }

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