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