Uso de operaciones de edición enriquecida de texto

Una aplicación puede enviar mensajes para recuperar o buscar texto en un control de edición enriquecido. Puede recuperar el texto seleccionado o un intervalo de texto especificado.

Para obtener el texto seleccionado en un control de edición enriquecido, use el mensaje EM_GETSELTEXT . El texto se copia en la matriz de caracteres especificada. Debe asegurarse de que la matriz es lo suficientemente grande como para contener el texto seleccionado, más un carácter nulo de terminación.

Para recuperar un intervalo de texto especificado, use el mensaje EM_GETTEXTRANGE . La estructura TEXTRANGE usada con este mensaje especifica el intervalo de texto que se va a recuperar y apunta a una matriz de caracteres que recibe el texto. Aquí de nuevo, la aplicación debe asegurarse de que la matriz es lo suficientemente grande para el texto especificado más un carácter nulo de terminación.

Puede buscar una cadena en un control de edición enriquecido mediante los mensajes EM_FINDTEXT o EM_FINDTEXTEX , o sus equivalentes Unicode, EM_FINDTEXTW y EM_FINDTEXTEXW. La estructura FINDTEXT que se usa con las versiones nonextended especifica el intervalo de texto que se va a buscar y la cadena que se va a buscar. Las versiones extendidas usan una estructura FINDTEXTEX , que especifica la misma información y también recibe los puntos inicial y final del intervalo de caracteres del texto encontrado. También puede especificar opciones como si la búsqueda distingue mayúsculas de minúsculas.

Lo que necesita saber

Tecnologías

Requisitos previos

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

Instrucciones

Usar una operación de edición enriquecida de texto

La siguiente función de ejemplo busca el texto especificado dentro del texto seleccionado en un control de edición enriquecido que admite Unicode. Si se encuentra el destino, se convierte en la nueva selección.

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

Comentarios

Microsoft Rich Edit 3.0 también admite la función HexToUnicode Input Method Editor (IME), que permite a un usuario convertir entre hexadecimal y Unicode mediante teclas de acceso rápido. Para obtener más información, vea IME HexToUnicode.

Uso de controles de edición enriquecida

Demostración de controles comunes de Windows (CppWindowsCommonControls)