Partilhar via


Como implementar dicas de ferramentas multilinha

Tooltips de várias linhas permitem exibir texto em mais de uma linha.

Eles são suportados pelo versão 4.70 e posterior dos controles comuns. A sua aplicação cria uma tooltip de várias linhas enviando uma mensagem TTM_SETMAXTIPWIDTH, especificando a largura do retângulo de exibição. O texto que excede esta largura passa para a linha seguinte em vez de alargar a área de visualização. A altura do retângulo é aumentada conforme necessário para acomodar as linhas adicionais. O controle de dica de ferramenta encapsula 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.

captura de ecrã de uma caixa de diálogo com uma dica de ferramenta que contém texto organizado como um parágrafo de várias linhas

Observação

O buffer de texto especificado pelo szText membro da estrutura deNMTTDISPINFO dopode acomodar apenas 80 caracteres. Se você precisar usar uma cadeia de caracteres mais longa, aponte o lpszText membro de NMTTDISPINFO para um buffer que contém o texto desejado.

 

O que precisa de saber

Tecnologias

Pré-requisitos

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

Instruções

Implementar dicas de ferramentas de várias linhas

O fragmento de código a seguir é um exemplo de um manipulador de notificação TTN_GETDISPINFO simples. Ele permite uma dica de ferramenta de várias linhas ao definir o retângulo de exibição com 150 píxeis. 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