Поделиться через


Как реализовать многострочные подсказки

Многострочные подсказки позволяют отображать текст на нескольких строках.

Они поддерживаются версии 4.70 и более поздних версий общих элементов управления. Приложение создает многострочную подсказку, отправляя сообщение TTM_SETMAXTIPWIDTH и указывая ширину прямоугольника отображения. Текст, превышающий эту ширину, помещает в следующую строку, а не расширяет область отображения. Высота прямоугольника увеличивается по мере необходимости для размещения дополнительных линий. Элемент управления подсказки автоматически упаковывает строки или можно использовать сочетание возвращаемого или строкового канала каретки, \r\nдля принудительного разрыва строк в определенных местах.

Результирующий дисплей показан на следующем рисунке.

снимок экрана диалогового окна с подсказкой, содержащей текст, расположенный как многострочный абзац

Заметка

Текстовый буфер, указанный szText элементом NMTTDISPINFO, может содержать только 80 символов. Если требуется использовать длинную строку, наведите указатель lpszText члена NMTTDISPINFO в буфер, содержащий нужный текст.

 

Что нужно знать

Технологии

Необходимые условия

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

с помощью элементов управления подсказками