Cómo implementar información sobre herramientas de varias líneas

La información sobre herramientas de varias líneas permite mostrar texto en más de una línea.

Son compatibles con la versión 4.70 y posteriores de los controles comunes. La aplicación crea una información sobre herramientas de varias líneas enviando un mensaje de TTM_SETMAXTIPWIDTH , especificando el ancho del rectángulo de presentación. El texto que supera este ancho se ajusta a la línea siguiente en lugar de ampliar la región de presentación. El alto del rectángulo se incrementa según sea necesario para acomodar las líneas adicionales. El control de información sobre herramientas ajusta las líneas automáticamente, o bien puede usar una combinación de retorno de carro/avance de línea, \r\n, para forzar saltos de línea en determinadas ubicaciones.

La presentación resultante se muestra en la ilustración siguiente.

captura de pantalla de un cuadro de diálogo con información sobre herramientas que contiene texto organizado como un párrafo de varias líneas

Nota

El búfer de texto especificado por el miembro szText de la estructura NMTTDISPINFO solo puede alojar 80 caracteres. Si necesita usar una cadena más larga, apunte el miembro lpszText de NMTTDISPINFO a un búfer que contenga el texto deseado.

 

Lo que necesita saber

Tecnologías

Requisitos previos

  • C/C++
  • Programación de la interfaz de usuario de Windows

Instrucciones

Implementación de la información sobre herramientas de varias líneas

El fragmento de código siguiente es un ejemplo de un controlador de notificaciones de TTN_GETDISPINFO simple. Habilita una información sobre herramientas de varias líneas estableciendo el rectángulo de presentación en 150 píxeles. Se inserta un salto de línea manual después de la primera palabra para mostrar que los saltos de línea pueden ser duros, así como suaves.

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

Uso de controles de información sobre herramientas