Partilhar via


Como usar operações de edição de rich text

Um aplicativo pode enviar mensagens para recuperar ou localizar texto em um controle de edição avançado. Você pode recuperar o texto selecionado ou um intervalo de texto especificado.

Para obter o texto selecionado em um controle de edição avançada, use a mensagem EM_GETSELTEXT. O texto é copiado para a matriz de caracteres especificada. Você deve garantir que a matriz seja grande o suficiente para conter o texto selecionado mais um caractere nulo de encerramento.

Para recuperar um intervalo especificado de texto, use a mensagem EM_GETTEXTRANGE. A estrutura deTEXTRANGEusada com esta mensagem especifica o intervalo de texto a ser recuperado e aponta para uma matriz de caracteres que recebe o texto. Aqui, novamente, o aplicativo deve garantir que a matriz seja grande o suficiente para o texto especificado mais um caractere nulo de encerramento.

Você pode pesquisar uma cadeia de caracteres em um controle de edição avançado usando as mensagens EM_FINDTEXT ou EM_FINDTEXTEX, ou seus equivalentes Unicode, EM_FINDTEXTW e EM_FINDTEXTEXW. A estrutura de FINDTEXT usada com as versões não estendidas especifica o intervalo de texto a ser pesquisado e a cadeia de caracteres a ser pesquisada. As versões estendidas usam uma estruturaFINDTEXTEX, que especifica as mesmas informações e também recebe os pontos de início e fim do intervalo de caracteres do texto encontrado. Você também pode especificar opções como se a pesquisa diferencia maiúsculas de minúsculas.

O que precisa de saber

Tecnologias

Pré-requisitos

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

Instruções

Usar uma operação de edição de rich text

A função de exemplo a seguir localiza o texto especificado dentro do texto selecionado em um controle de edição avançado que oferece suporte a Unicode. Se o alvo for encontrado, ele se torna a nova seleção.

BOOL FindTextInSelection(HWND hRich, WCHAR* target)
{
    CHARRANGE selectionRange;
    
    SendMessage(hRich, EM_EXGETSEL, 0, (LPARAM)&selectionRange);
    
    FINDTEXTEX ftex;
    
    ftex.lpstrText  = target;
    ftex.chrg.cpMin = selectionRange.cpMin;
    ftex.chrg.cpMax = selectionRange.cpMax;
    
    LRESULT lr = SendMessage(hRich, EM_FINDTEXTEXW, (WPARAM)FR_DOWN, (LPARAM) &ftex);
    
    if (lr >= 0)
    {
        LRESULT lr1 = SendMessage(hRich, EM_EXSETSEL, 0, (LPARAM)&ftex.chrgText);
        
        SendMessage(hRich, EM_HIDESELECTION, (LPARAM)FALSE, 0);
        
        return TRUE;
    }
    
    return FALSE;
    
}

Comentários

Microsoft Rich Edit 3.0 também suporta a função HexToUnicode Input Method Editor (IME), que permite que um usuário converta entre hexadecimal e Unicode usando teclas de atalho. Para obter mais informações, consulte do IME HexToUnicode.

Usando controles de edição avançados

Demonstração de controles comuns do Windows (CppWindowsCommonControls)