Реализация многострочного подсказки

Подсказки с несколькими линиями позволяют отображать текст на нескольких строках.

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

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

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

Примечание.

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

 

Это важно знать

Технологии

Необходимые компоненты

  • C/C++
  • Программирование пользовательского интерфейса Windows

Instructions

Реализация многострочного подсказки

Следующий фрагмент кода является примером простого обработчика уведомлений 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;
    }

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