다음을 통해 공유


현재 선택 영역과 상호 작용하는 방법

사용자는 마우스 또는 키보드를 사용하여 서식 있는 편집 컨트롤에서 텍스트를 선택할 수 있습니다. 현재 선택 영역 선택한 문자의 범위 또는 선택한 문자가 없는 경우 삽입 지점의 위치입니다. 애플리케이션은 현재 선택 영역에 대한 정보를 얻고, 설정하고, 변경 시기를 결정하고, 선택 강조 표시를 표시하거나 숨길 수 있습니다.

알아야 할 사항

기술

필수 구성 요소

  • C/C++
  • Windows 사용자 인터페이스 프로그래밍

지시

현재 선택 영역과 상호 작용

서식 있는 편집 컨트롤에서 현재 선택 영역을 확인하려면 EM_EXGETSEL 메시지를 사용합니다. 현재 선택을 설정하려면 EM_EXSETSEL 메시지를 사용합니다. CHARRANGE 구조체는 두 메시지와 함께 사용되며 문자 범위를 지정합니다. 현재 선택 영역의 내용에 대한 정보를 검색하려면 EM_SELECTIONTYPE 메시지를 사용할 수 있습니다.

애플리케이션은 EN_SELCHANGE 알림 코드를 처리하여 현재 선택이 변경되는 시기를 감지할 수 있습니다. 알림 코드는 새 선택 항목에 대한 정보를 포함하는 SELCHANGE 구조를 지정합니다. 서식 있는 편집 컨트롤은 EM_SETEVENTMASK 메시지를 사용하여 사용하도록 설정한 경우에만 이 알림 코드를 보냅니다.

기본적으로 리치 에디트 컨트롤은 포커스를 얻고 잃을 때 선택 강조 표시를 표시하고 숨깁니다. EM_HIDESELECTION 메시지를 사용하여 언제든지 선택 강조 표시를 표시하거나 숨길 수 있습니다. 예를 들어 애플리케이션은 서식 있는 편집 컨트롤에서 텍스트를 찾을 수 있는 검색 대화 상자를 제공할 수 있습니다. 애플리케이션은 대화 상자를 닫지 않고 일치하는 텍스트를 선택할 수 있습니다. 이 경우 EM_HIDESELECTION 메시지를 사용하여 선택을 강조 표시해야 합니다.

편집 컨트롤과 마찬가지로, 서식 있는 편집 컨트롤이 포커스를 잃었을 때 선택된 영역의 강조 표시를 숨기지 않도록 ES_NOHIDESEL 창 스타일을 지정할 수 있습니다.

대신 EM_EXGETSELEM_EXSETSEL 메시지들을 사용할 수 있으며, EM_GETSELEM_SETSEL 편집 컨트롤 메시지를 사용하여 현재 선택을 검색하고 설정할 수 있습니다. EM_GETSEL 메시지는 두 개의 16비트 문자 인덱스를 32비트 반환 값으로 압축하므로 처음 64K 내에 완전히 속하는 선택 영역에만 작동합니다. 그러나 서식 있는 편집 컨트롤은 EM_LIMITTEXT 또는 EM_EXLIMITTEXT 메시지를 사용하여 이 제한을 확장하지 않는 한 32K 문자를 초과하는 텍스트를 포함하지 않습니다. 처음 64KB의 텍스트 이상으로 확장되는 선택 영역의 경우 EM_GETSEL 메시지는 –1을 반환합니다. 이 경우 wParam 반환된 값을 사용하고 lParam 선택 영역의 시작 문자와 끝 문자를 찾을 수 있습니다.

서식 있는 편집 컨트롤 사용하기

Windows 공용 컨트롤 데모(CppWindowsCommonControls)