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

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

알아야 하는 작업

기술

필수 구성 요소

  • 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을 반환합니다. 이 경우 wParamlParam에서 반환되는 값을 사용하여 선택의 시작 문자와 끝 문자를 찾을 수 있습니다.

서식 있는 편집 컨트롤 사용

Windows 공용 컨트롤 데모(CppWindowsCommonControls)