UI 자동화 컨트롤 패턴 개요

컨트롤 패턴은 컨트롤 기능의 특정 측면을 Microsoft UI 자동화 클라이언트 애플리케이션에 노출하는 인터페이스 구현입니다. 클라이언트는 컨트롤 패턴을 통해 노출되는 속성 및 메서드를 사용하여 컨트롤의 특정 기능에 대한 정보를 검색하거나 컨트롤 동작의 특정 측면을 조작합니다. 예를 들어 테이블 형식 인터페이스를 제공하는 컨트롤은 Grid 컨트롤 패턴을 사용하여 테이블의 행과 열 수를 노출하고 클라이언트가 테이블에서 항목을 검색할 수 있도록 합니다.

UI 자동화는 컨트롤 패턴을 사용하여 공통된 컨트롤 동작을 나타냅니다. 예를 들어 단추와 같이 호출할 수 있는 컨트롤에 대해 Invoke 컨트롤 패턴을 사용하고 목록 상자, 목록 보기 또는 콤보 상자와 같은 스크롤 막대가 있는 컨트롤의 스크롤 컨트롤 패턴을 사용합니다. 각 컨트롤 패턴은 별도의 기능을 나타내기 때문에 컨트롤 패턴을 결합하여 특정 컨트롤에서 지원하는 전체 기능 집합을 설명할 수 있습니다.

참고

집계 컨트롤은 부모에 의해 노출되는 기능에 대한 사용자 인터페이스를 제공하는 자식 컨트롤을 사용하여 빌드되며, 부모는 일반적으로 자식 컨트롤과 연결된 모든 컨트롤 패턴을 구현해야 합니다. 따라서 이러한 동일한 컨트롤 패턴을 하위 컨트롤이 구현할 필요가 없습니다.

 

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

UI 자동화 컨트롤 패턴 구성 요소

컨트롤 패턴은 컨트롤에서 사용할 수 있는 개별 기능을 정의하는 데 필요한 메서드, 속성, 이벤트 및 관계를 지원합니다.

  • 메서드는 UI 자동화 클라이언트가 컨트롤을 조작할 수 있도록 합니다.
  • 속성 및 이벤트는 컨트롤의 기능 및 상태에 대한 정보를 제공합니다.
  • UI 자동화 요소와 부모, 자식 및 형제 간의 관계는 UI 자동화 트리의 요소 구조를 설명합니다.

컨트롤 패턴은 인터페이스가 COM(구성 요소 개체 모델) 개체와 관련된 방식과 유사한 컨트롤과 관련이 있습니다. COM에서 개체를 쿼리하여 지원하는 인터페이스를 묻고 해당 인터페이스를 사용하여 기능에 액세스할 수 있습니다. UI 자동화 클라이언트는 지원하는 컨트롤 패턴을 컨트롤에 요청한 다음 지원되는 컨트롤 패턴에 의해 노출되는 속성, 메서드, 이벤트 및 구조를 통해 컨트롤과 상호 작용할 수 있습니다.

공급자 및 클라이언트의 컨트롤 패턴

UI 자동화 공급자는 컨트롤 패턴 인터페이스를 구현하여 컨트롤에서 지원하는 특정 기능에 대한 적절한 동작을 노출합니다. 이러한 인터페이스는 클라이언트에 직접 노출되지 않지만 UI 자동화 코어에서 다른 클라이언트 인터페이스 집합을 구현하는 데 사용됩니다. 예를 들어 공급자는 IScrollProvider를 통해 UI 자동화 스크롤 기능을 노출하고 UI 자동화 IUIAutomationScrollPattern을 통해 클라이언트에 기능을 노출합니다.

동적 컨트롤 패턴

일부 컨트롤에서는 동일한 컨트롤 패턴의 집합이 항상 지원되지는 않습니다. 예를 들어 여러 줄 편집 컨트롤은 볼 수 있는 영역에 표시할 수 있는 것보다 많은 텍스트 줄이 포함된 경우에만 세로 스크롤을 사용할 수 있습니다. 스크롤이 더 이상 필요하지 않을만큼 충분한 양의 텍스트가 제거되면 스크롤이 비활성화됩니다. 이 예제에서는 편집 상자에 있는 텍스트 양에 따라 IUIAutomationScrollPattern 이 동적으로 지원됩니다.

다음 표에서는 UI 자동화 컨트롤 패턴에 대해 설명합니다. 또한 이 표에는 컨트롤 패턴을 구현하는 데 사용되는 공급자 인터페이스와 해당 패턴에 액세스하는 데 사용되는 클라이언트 인터페이스가 나열되어 있습니다.

속성 공급자 인터페이스 클라이언트 인터페이스 설명
주석 IAnnotationProvider IUIAutomationAnnotationPattern 문서에서 주석의 속성을 노출하는 데 사용됩니다(예: 문서 텍스트에 연결된 여백의 주석).
Dock IDockProvider IUIAutomationDockPattern 도킹 컨테이너에 도킹할 수 있는 컨트롤(예: 도구 모음 또는 도구 팔레트)에 사용됩니다.
끌기 IDragProvider IUIAutomationDragPattern 끌기 가능 컨트롤이나 끌기 가능 항목이 있는 컨트롤을 지원하는 데 사용됩니다.
DropTarget IDropTargetProvider IUIAutomationDropTargetPattern 끌어서 놓기 작업의 대상이 될 수 있는 컨트롤을 지원하는 데 사용됩니다.
ExpandCollapse IExpandCollapseProvider IUIAutomationExpandCollapsePattern 확장하거나 축소할 수 있는 컨트롤(예: 파일 메뉴와 같은 애플리케이션의 메뉴 항목)에 사용됩니다.
그리드 IGridProvider IUIAutomationGridPattern 크기 조정 및 지정된 셀로 이동과 같은 그리드 기능을 지원하는 컨트롤에 사용됩니다(예: Windows Explorer 큰 아이콘 보기 또는 Microsoft Office Word 단순 테이블).
GridItem IGridItemProvider IUIAutomationGridItemPattern 표에 셀이 있는 컨트롤에 사용됩니다. 개별 셀은 GridItem 패턴(예: Windows Explorer 세부 정보 보기의 각 셀)을 지원해야 합니다.
Invoke IInvokeProvider IUIAutomationInvokePattern 단추와 같이 호출할 수 있는 컨트롤에 사용됩니다.
ItemContainer IItemContainerProvider IUIAutomationItemContainerPattern 다른 항목을 포함할 수 있는 컨트롤에 사용됩니다.
LegacyIAccessible ILegacyIAccessibleProvider IUIAutomationLegacyIAccessiblePattern Microsoft Active Accessibility 속성 및 메서드를 UI 자동화 클라이언트에 노출하는 데 사용됩니다.
MultipleView IMultipleViewProvider IUIAutomationMultipleViewPattern 같은 정보, 데이터 또는 자식 집합의 여러 표현 간에 전환할 수 있는 컨트롤(예: 썸네일, 타일, 아이콘, 목록 또는 세부 정보 보기에서 데이터를 사용할 수 있는 목록 보기 컨트롤)에 사용됩니다.
ObjectModel IObjectModelProvider IUIAutomationObjectModelPattern 포인터를 문서의 기본 개체 모델에 표시하는 데 사용됩니다. 이 컨트롤 패턴을 사용하면 클라이언트가 UI 자동화 요소에서 기본 개체 모델로 이동할 수 있습니다.
RangeValue IRangeValueProvider IUIAutomationRangeValuePattern 값 범위가 있는 컨트롤에 사용됩니다. 예를 들어 연도를 표시하는 회전자 컨트롤의 범위는 1900~2010일 수 있지만 월을 표시하는 회전자 컨트롤의 범위는 1~12입니다.
스크롤 IScrollProvider IUIAutomationScrollPattern 컨트롤의 볼 수 있는 영역에 표시할 수 있는 것보다 더 많은 정보가 있을 때 스크롤할 수 있는 컨트롤에 사용됩니다.
ScrollItem IScrollItemProvider IUIAutomationScrollItemPattern 목록의 개별 항목이 스크롤되는 컨트롤(예: 콤보 상자 컨트롤의 목록 컨트롤)에 사용됩니다.
선택 항목 ISelectionProvider IUIAutomationSelectionPattern 선택 컨테이너 컨트롤(예: 목록 상자 및 콤보 상자)에 사용됩니다.
SelectionItem ISelectionItemProvider IUIAutomationSelectionItemPattern 목록 상자 및 콤보 상자와 같은 선택 컨테이너 컨트롤의 개별 항목에 사용됩니다.
스프레드시트 ISpreadsheetProvider IUIAutomationSpreadsheetPattern 스프레드시트 또는 기타 그리드 기반 문서의 내용을 표시하는 데 사용됩니다. 스프레드시트 컨트롤 패턴을 구현하는 컨트롤도 Grid 컨트롤 패턴을 구현해야 합니다.
SpreadsheetItem ISpreadsheetItemProvider IUIAutomationSpreadsheetItemPattern 스프레드시트 또는 기타 그리드 기반 문서에 있는 셀의 속성을 표시하는 데 사용됩니다. 또한 SpreadsheetItem 컨트롤 패턴을 구현하는 컨트롤은 GridItem 컨트롤 패턴을 구현해야 합니다.
스타일 IStylesProvider IUIAutomationStylesPattern 특정 스타일, 채우기 색, 채우기 패턴 또는 도형이 있는 UI 요소를 설명하는 데 사용됩니다.
SynchronizedInput ISynchronizedInputProvider IUIAutomationSynchronizedInputPattern 키보드 또는 마우스 입력을 허용하는 컨트롤에 사용됩니다.
테이블 ITableProvider IUIAutomationTablePattern 그리드 및 헤더 정보가 있는 컨트롤에 사용됩니다.
TableItem ITableItemProvider IUIAutomationTableItemPattern 테이블의 항목에 사용됩니다.
Text ITextProvider IUIAutomationTextPattern 편집 컨트롤 및 텍스트 정보를 노출하는 문서에 사용됩니다.
TextEdit ITextEditProvider IUIAutomationTextEditPattern 자동 수정을 수행하거나 입력 컴퍼지션을 사용하도록 설정하는 컨트롤과 같이 프로그래밍 방식으로 텍스트를 수정하는 편집 컨트롤에 사용됩니다.
TextChild ITextChildProvider IUIAutomationTextChildPattern Text 컨트롤 패턴을 지원하는 요소의 가장 가까운 상위 항목에 액세스하는 데 사용됩니다.
TextRange ITextRangeProvider IUIAutomationTextRange 편집 컨트롤 및 문서와 같은 텍스트 기반 컨트롤에서 텍스트 콘텐츠, 텍스트 특성 및 포함된 개체를 검색하는 데 사용됩니다.
Toggle IToggleProvider IUIAutomationTogglePattern 상태를 전환할 수 있는 컨트롤(예: 검사 상자 및 확인 가능한 메뉴 항목)에 사용됩니다.
변환 ITransformProvider IUIAutomationTransformPattern 크기 조정, 이동 및 회전할 수 있는 컨트롤에 사용됩니다. Transform 컨트롤 패턴은 디자이너, 폼, 그래픽 편집기 및 그리기 애플리케이션에서 일반적으로 사용됩니다.
IValueProvider IUIAutomationValuePattern 지정된 범위 내에 있지 않은 값이 있는 컨트롤(예: 날짜-시간 선택기)에 사용됩니다.
VirtualizedItem IVirtualizedItemProvider IUIAutomationVirtualizedItemPattern 가상 목록의 항목과 함께 작동하는 컨트롤에 사용됩니다.
IWindowProvider IUIAutomationWindowPattern 창에 사용됩니다. 예를 들어 최상위 애플리케이션 창, MDI(다중 문서 인터페이스) 자식 창 및 대화 상자가 있습니다.

 

개념

UI 자동화 컨트롤 패턴 구현

UI 자동화 클라이언트에 대한 컨트롤 패턴 매핑