Come usare le operazioni di testo avanzato
Un'applicazione può inviare messaggi per recuperare o trovare testo in un controllo di modifica ricca. È possibile recuperare il testo selezionato o un intervallo di testo specificato.
Per ottenere il testo selezionato in un controllo rich edit, usare il messaggio EM_GETSELTEXT. Il testo viene copiato nella matrice di caratteri specificata. È necessario assicurarsi che la matrice sia sufficientemente grande da contenere il testo selezionato e un carattere Null di terminazione.
Per recuperare un intervallo di testo specificato, utilizzare il messaggio di EM_GETTEXTRANGE. La strutturaTEXTRANGEutilizzata con questo messaggio specifica l'intervallo di testo da recuperare e punta a una matrice di caratteri che riceve il testo. Anche in questo caso, l'applicazione deve assicurarsi che la matrice sia sufficientemente grande per il testo specificato e un carattere Null di terminazione.
È possibile cercare una stringa in un controllo di modifica rtf usando i messaggi EM_FINDTEXT o EM_FINDTEXTEX oppure i relativi equivalenti Unicode, EM_FINDTEXTW e EM_FINDTEXTEXW. La struttura FINDTEXT utilizzata con le versioni non automatiche specifica l'intervallo di testo da cercare e la stringa da cercare. Le versioni estese usano una struttura FINDTEXTEX, che specifica le stesse informazioni e riceve anche i punti iniziale e finale dell'intervallo di caratteri del testo trovato. È anche possibile specificare tali opzioni, ad esempio se la ricerca fa distinzione tra maiuscole e minuscole.
Cosa è necessario sapere
Tecnologie
Prerequisiti
- C/C++
- Programmazione dell'interfaccia utente di Windows
Disposizioni
Usare un'operazione di modifica avanzata del testo
La funzione di esempio seguente trova il testo specificato all'interno del testo selezionato in un controllo rich edit che supporta Unicode. Se la destinazione viene trovata, diventa la nuova selezione.
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;
}
Osservazioni
Microsoft Rich Edit 3.0 supporta anche la funzione IME (Input Method Editor) HexToUnicode, che consente a un utente di eseguire la conversione tra esadecimale e Unicode usando i tasti di scelta rapida. Per altre informazioni, vedere HexToUnicode IME.
Argomenti correlati