텍스트 및 TextRange 컨트롤 패턴 정보
컨트롤의 텍스트 콘텐츠는 텍스트 컨테이너의 내용을 텍스트 스트림으로 나타내는 텍스트 컨트롤 패턴을 사용하여 노출됩니다. 텍스트 컨트롤 패턴을 사용하려면 서식 및 스타일 특성을 노출하기 위해 TextRange 컨트롤 패턴을 지원해야 합니다. TextRange 컨트롤 패턴은 시작 및 엔드포인트 컬렉션이 있는 텍스트 컨테이너에서 인접하거나 여러 개의 연결이 끊긴 텍스트 범위(또는 범위)를 나타내어 텍스트 컨트롤 패턴을 지원합니다. TextRange 컨트롤 패턴은 선택, 비교, 검색 및 순회와 같은 기능을 지원합니다.
참고
텍스트 컨트롤 패턴은 텍스트를 삽입하거나 수정하는 수단을 제공하지 않습니다. 그러나 컨트롤에 따라 Microsoft UI 자동화 값 컨트롤 패턴을 사용하거나 직접 키보드 입력을 통해 수행할 수 있습니다. 텍스트에 대한 프로그래밍 방식 변경을 지원하는 TextEdit 패턴도 있습니다.
이 항목에 설명된 기능은 보조 기술 공급업체와 최종 사용자에게 매우 중요합니다. 보조 기술은 UI 자동화 사용하여 사용자의 전체 텍스트 서식 정보를 수집하고 TextUnit(문자, 단어, 줄 또는 단락)을 통해 프로그래밍 방식으로 탐색하고 텍스트를 선택할 수 있습니다.
이 항목에는 다음과 같은 섹션이 포함되어 있습니다.
- TextPattern 및 Text Services 프레임워크 UI 자동화
- 컨트롤 형식
- 공급자 인터페이스
- 클라이언트 인터페이스
- 성능
- 텍스트 패턴 및 가상화된 포함된 개체
- 텍스트 컨트롤 패턴과 함께 사용자 지정 컨트롤 형식 사용
- 텍스트 범위의 수명
- 관련 항목
TextPattern 및 Text Services 프레임워크 UI 자동화
TSF(Text Services Framework)는 데스크톱 및 애플리케이션에서 자연어 서비스 및 고급 텍스트 입력을 가능하게 하는 간단하고 확장 가능한 시스템 프레임워크입니다. 애플리케이션이 텍스트 저장소를 노출할 수 있는 인터페이스를 제공할 뿐만 아니라 텍스트 저장소에 대한 메타데이터도 지원합니다.
TSF는 컨텍스트 인식 시나리오에 입력을 삽입해야 하는 애플리케이션을 위해 설계되었습니다. 그러나 텍스트 컨트롤 패턴은 화면 읽기 프로그램 및 점자 디바이스용 텍스트 저장소에 최적화된 액세스를 제공하기 위한 읽기 전용 솔루션입니다.
텍스트 저장소에 대한 읽기 전용 액세스가 필요한 액세스 가능한 기술은 텍스트 컨트롤 패턴을 사용할 수 있지만 컨텍스트 인식 입력을 위해 TSF의 기능이 필요합니다.
자세한 내용은 Text Services Framework를 참조하세요.
컨트롤 형식
UI 자동화 편집 컨트롤 형식 및 문서 컨트롤 형식은 텍스트 컨트롤 패턴을 지원해야 합니다. 접근성 향상을 위해 도구 설명 및 텍스트 컨트롤 형식도 텍스트 컨트롤 패턴을 지원하는 것이 좋지만 필수는 아닙니다.
공급자 인터페이스
UI 자동화 공급자는 ITextProvider 및 ITextRangeProvider 인터페이스를 구현하여 컨트롤에 대한 텍스트 컨트롤 패턴을 지원합니다. 이러한 인터페이스는 컨트롤의 텍스트에 대한 자세한 특성 정보를 노출하고 강력한 탐색 기능을 제공합니다.
컨트롤에 특정 특성에 대한 지원이 없는 경우 공급자가 모든 텍스트 특성을 지원할 필요가 없습니다.
컨트롤이 텍스트 영역 내에서 텍스트 커서(또는 시스템 caret)의 텍스트 선택 또는 배치를 지원하는 경우 공급자는 ITextProvider::GetSelection 및 ITextRangeProvider::Select 메서드를 지원해야 합니다. 컨트롤이 이 기능을 지원하지 않는 경우 이러한 메서드 중 하나를 지원할 필요가 없습니다. 그러나 컨트롤은 ITextProvider::SupportedTextSelection 속성을 구현하여 지원하는 텍스트 선택 유형을 노출해야 합니다.
공급자는 항상 TextUnit 상수, TextUnit_Character 및 TextUnit_Document 지원할 수 있는 기타 상수를 지원해야 합니다.
참고
공급자는 TextUnit_Character, TextUnit_Format, TextUnit_Word, TextUnit_Line, TextUnit_Paragraph, TextUnit_Page 및 TextUnit_Document 순서대로 지원되는 다음 가장 큰 단위로 연기하여 특정 TextUnit에 대한 지원을 건너뛸 수 있습니다.
클라이언트 인터페이스
UI 자동화 클라이언트 애플리케이션은 IUIAutomationTextPattern 및 IUIAutomationTextRange 인터페이스를 사용하여 텍스트 컨트롤의 텍스트 콘텐츠에 액세스합니다. 클라이언트는 IUIAutomationTextPattern 을 사용하여 텍스트 범위라는 텍스트 범위를 선택하고 범위에 대한 IUIAutomationTextRange 인터페이스에 대한 포인터를 검색합니다. IUIAutomationTextRange 인터페이스를 사용하면 클라이언트가 텍스트 범위를 조작하고 글꼴 이름, 전경색, 밑줄 스타일 등의 특성을 포함하여 범위의 텍스트에 대한 정보를 검색할 수 있습니다. 자세한 내용은 텍스트 특성 식별자를 참조하세요.
성능
텍스트 컨트롤 패턴은 대부분의 기능에 대해 교차 프로세스 호출을 사용하므로 콘텐츠를 처리할 때 성능을 향상시키는 캐싱 메커니즘을 제공하지 않습니다. Microsoft UI 자동화 다른 컨트롤 패턴은 IUIAutomationElement::GetCachedPattern 메서드를 사용하여 액세스할 수 있습니다.
성능을 향상시키기 위한 한 가지 방법은 UI 자동화 클라이언트가 IUIAutomationTextRange::GetText 메서드를 사용하여 적당히 크기의 텍스트 블록을 검색하려고 시도하는 것입니다. 예를 들어 GetText 를 사용하여 단일 문자를 검색하면 각 문자에 대해 교차 프로세스 적중이 발생하는 반면 GetText 를 호출할 때 최대 길이를 지정하지 않으면 프로세스 간 적중이 하나 발생하지만 텍스트 범위의 크기에 따라 대기 시간이 길어질 수 있습니다.
텍스트 패턴 및 가상화된 포함된 개체
가능하면 ITextProvider 및ITextRangeProvider 의 공급자 구현은 뷰포트 외부의 텍스트를 포함하여 문서의 전체 텍스트를 지원해야 합니다. 가상화된 오프 스크린 텍스트 또는 포함된 개체의 경우 공급자는 VirtualizedItem 컨트롤 패턴 (IVirtualizedItemProvider)을 지원해야 합니다.
전체 텍스트 스트림을 계속 사용할 수 있는 동안 문서가 가상화되면 ITextProvider::D cumentRange 속성은 전체 문서를 포함하는 텍스트 범위를 검색합니다. 그러나 ITextRangeProvider 메서드를 호출하면 문서의 모든 포함된 개체를 나타내는 가상화된 개체의 컬렉션이 검색됩니다. 가상화된 임베디드 개체와 상호 작용하려면 클라이언트가 IVirtualizedItemProvider::Realize 메서드를 호출해야 합니다. 이 메서드는 항목을 UI 자동화 요소로 완전히 액세스할 수 있게 합니다. 클라이언트는 테이블의 일부가 화면 외에 가상화된 포함된 테이블의 그리드 요소로 작업하려면 유사한 프로세스를 따라야 합니다.
텍스트 컨트롤 패턴과 함께 사용자 지정 컨트롤 형식 사용
텍스트 컨트롤 패턴은 많은 텍스트 특성과 포함된 개체를 지원하지만 가능한 모든 문서 요소와 프레젠테이션 형식을 미리 정의할 수 없습니다. 기존 특성 또는 표준 컨트롤 형식에서 지원되지 않는 문서 요소의 경우 공급자는 UI 자동화 사용자 지정 컨트롤 형식에서 제공하는 확장성 기능을 사용할 수 있습니다.
페이지 프레젠테이션을 기반으로 하는 애플리케이션 및 사용자 인터페이스의 경우 "page"의 경계 및 레이아웃 프레젠테이션을 사용자 지정 컨트롤 형식(즉, LocalizedControlType="page"
)이 있는 포함된 개체로 표현할 수도 있습니다. 이렇게 하면 포함된 개체는 각 페이지의 머리글 및 바닥글 필드와 같이 문서 텍스트 스트림의 일부가 될 수 없는 다른 페이지 요소를 "page" 포함된 개체의 자식으로 호스트할 수 있습니다. 또는 각 "page" 개체는 텍스트 컨트롤 패턴을 독립적으로 지원할 수 있습니다. 이 패턴은 슬라이드 쇼 프레젠테이션용 제작 도구 또는 페이지 기반 데스크톱 게시 환경과 같은 애플리케이션에 적합합니다.
텍스트 범위의 수명
가능한 경우 공급자는 삭제, 삽입 및 이동과 같은 텍스트 변경 내용이 연결된 텍스트 범위에 반영되도록 해야 합니다. 텍스트 범위를 업데이트할 수 없는 경우 공급자는 클라이언트에 텍스트 범위가 더 이상 유효하지 않으며 새 텍스트 범위를 검색해야 한다는 사실을 알리기 위해 UIA_Text_TextChangedEventId 이벤트를 발생시켜야 합니다.
관련 항목
-
개념
-
기타 리소스