리치 에디트 텍스트 작업을 사용하는 방법
애플리케이션은 다양한 편집 컨트롤에서 텍스트를 검색하거나 찾기 위해 메시지를 보낼 수 있습니다. 선택한 텍스트 또는 지정된 텍스트 범위를 검색할 수 있습니다.
서식 있는 편집 컨트롤에서 선택한 텍스트를 얻으려면 EM_GETSELTEXT 메시지를 사용합니다. 텍스트가 지정된 문자 배열에 복사됩니다. 선택한 텍스트와 종료 null 문자를 저장할 수 있을 만큼 배열이 충분히 큰지 확인해야 합니다.
지정된 텍스트 범위를 검색하려면 EM_GETTEXTRANGE 메시지를 사용합니다. 이 메시지와 함께 사용되는 TEXTRANGE 구조체는 검색할 텍스트 범위를 지정하고 텍스트를 받는 문자 배열을 가리킵니다. 여기서도 애플리케이션은 배열이 지정된 텍스트와 종료 null 문자에 대해 충분히 큰지 확인해야 합니다.
EM_FINDTEXT 또는 EM_FINDTEXTEX 메시지 또는 유니코드 등가물인 EM_FINDTEXTW 및 EM_FINDTEXTEXW사용하여 서식 있는 편집 컨트롤에서 문자열을 검색할 수 있습니다. 무인 버전과 함께 사용되는 FINDTEXT 구조체는 검색할 텍스트 범위와 검색할 문자열을 지정합니다. 확장 버전은 동일한 정보를 지정하고 찾은 텍스트의 문자 범위의 시작점과 끝점을 수신하는 FINDTEXTEX 구조를 사용합니다. 검색이 대/소문자를 구분하는지 여부와 같은 옵션을 지정할 수도 있습니다.
알아야 할 사항
기술
필수 구성 요소
- C/C++
- Windows 사용자 인터페이스 프로그래밍
지시
리치 텍스트 편집 작업 사용하기
다음 예제 함수는 유니코드를 지원하는 서식 있는 편집 컨트롤에서 선택한 텍스트 내에서 지정된 텍스트를 찾습니다. 대상이 발견되면 새 선택 영역이 됩니다.
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;
}
발언
Microsoft Rich Edit 3.0에서는 사용자가 핫 키를 사용하여 16진수와 유니코드 간에 변환할 수 있는 IME(HexToUnicode Input Method Editor) 함수도 지원합니다. 자세한 내용은 HexToUnicode IME참조하세요.
관련 항목