Como usar operações de texto de edição avançada

Um aplicativo pode enviar mensagens para recuperar ou localizar texto em um controle de edição avançada. 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ê precisa 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 TEXTRANGE usada com essa 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 terminação.

Você pode procurar 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 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 estrutura FINDTEXTEX , que especifica as mesmas informações e também recebe os pontos inicial e final 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 você precisa saber

Tecnologias

Pré-requisitos

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

Instruções

Usar uma operação de rich edit text

A função de exemplo a seguir localiza o texto especificado dentro do texto selecionado em um controle rich edit que oferece suporte a Unicode. Se o destino for encontrado, ele se tornará 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 oferece suporte 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 HexToUnicode IME.

Usando controles de edição avançada

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