Como implementar dicas de ferramentas multilinha

As dicas de ferramentas de várias linhas permitem que o texto seja exibido em mais de uma linha.

Eles são suportados pela versão 4.70 e posterior dos controles comuns. Seu aplicativo cria uma dica de ferramenta de várias linhas enviando uma mensagem TTM_SETMAXTIPWIDTH , especificando a largura do retângulo de exibição. O texto que excede essa largura é quebrado para a próxima linha em vez de ampliar a região de exibição. A altura do retângulo é aumentada conforme necessário para acomodar as linhas adicionais. O controle de dica de ferramenta quebra as linhas automaticamente ou você pode usar uma combinação de retorno de carro/alimentação de linha, \r\n, para forçar quebras de linha em locais específicos.

A exibição resultante é mostrada na ilustração a seguir.

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

Observação

O buffer de texto especificado pelo membro szText da estrutura NMTTDISPINFO pode acomodar apenas 80 caracteres. Se você precisar usar uma cadeia de caracteres mais longa, aponte o membro lpszText do NMTTDISPINFO para um buffer contendo o texto desejado.

 

O que você precisa saber

Tecnologias

Pré-requisitos

  • C/C++
  • Programação da interface do usuário do Windows

Instruções

Implementar dicas de ferramentas multilinha

O fragmento de código a seguir é um exemplo de um manipulador de notificação de TTN_GETDISPINFO simples. Ele habilita uma dica de ferramenta de várias linhas, definindo o retângulo de exibição para 150 pixels. Uma quebra de linha manual é inserida após a primeira palavra para mostrar que as quebras de linha podem ser duras e 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;
    }

Usando controles de dica de ferramenta