IAccessibleEx 구현 지침

Microsoft UI 자동화 코어는 IAccessible 인터페이스를 통해 서버에서 노출하는 액세스 가능한 개체에 대한 모든 Microsoft Active Accessibility 속성을 검색할 수 있습니다. IAccessibleEx를 구현할 때 기존 Microsoft Active Accessibility 속성을 통해 노출할 수 없는 UI 기능의 측면만 노출해야 합니다. 이 항목에서는 Microsoft Active Accessibility에 대응하지 않는 UI 기능을 나타내는 UI 자동화 속성 및 컨트롤 패턴을 식별합니다. IAccessibleEx 구현에서 노출할 수 있는 속성 및 컨트롤 패턴입니다.

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

속성

다음 UI 자동화 속성은 Microsoft Active Accessibility 기능과 겹치지 않습니다. IAccessibleEx 구현에서 사용할 수 있습니다.

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • 문화권
  • DescribedBy
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • 방향

AcceleratorKey 및 AccessKey UI 자동화 속성은 accKeyboardShortcut Microsoft Active Accessibility 속성과 겹치지만 액세스 키와 가속기가 모두 있는 컨트롤에 대해 IAccessibleEx 구현에서 사용할 수 있습니다. 마찬가지로 ControlType UI 자동화 속성은 Microsoft Active Accessibility accRole 속성과 겹치지만 IAccessibleEx 구현에서 이 속성을 사용하여 컨트롤에 대한 보다 구체적인 역할을 정의할 수 있습니다.

다음 UI 자동화 요소 속성은 이미 Microsoft Active Accessibility 속성에서 다루므로 IAccessibleEx 구현에서 사용할 필요가 없습니다.

UI 자동화 속성 Microsoft Active Accessibility Equivalent
BoundingRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
속성 accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId UI 자동화 코어에서 제공

 

지원되지 않는 UI 자동화 속성의 경우 IRawElementProviderSimple::GetPropertyValue 메서드의 구현은 pRetVal 매개 변수를 VT_EMPTY 설정하고 S_OK 반환해야 합니다. UIA_E_NOTSUPPORTED 반환하면 MSAA-UIA 프록시가 해당 속성에 대한 기본 매핑을 제거할 수 있습니다.

컨트롤 패턴

다음 UI 자동화 컨트롤 패턴은 Microsoft Active Accessibility 기능과 겹치지 않습니다. IAccessibleEx 구현에서 사용할 수 있습니다.

  • 도킹
  • 확장/축소
  • 그리드
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • 테이블
  • TableItem
  • 변환

RangeValue 및 변환 컨트롤 패턴의 경우 일부 메서드는 UI 자동화 컨트롤 패턴과 Microsoft Active Accessibility 메서드 간에 겹칩니다. 이러한 경우 둘 다 구현되어야 합니다. 예를 들어 Microsoft Active Accessibility의 IAccessible::get_accValueIAccessible::p ut_accValue 메서드는 모두 UI 자동화IRangeValueProvider::ValueIRangeValueProvider::SetValue 메서드와 마찬가지로 구현되어야 합니다. 내부적으로 구현은 이러한 코드를 공유할 수 있습니다. 두 집합을 모두 구현하기 위한 이 요구 사항은 기존 Microsoft Active Accessibility 클라이언트에서 사용할 수 있는 IAccessible 인터페이스를 유지하면서 패턴 인터페이스의 부분 구현을 방지합니다.

다음 UI 자동화 컨트롤 패턴은 컨트롤에 아래에 설명된 역할 중 하나가 있는 경우 필요하지 않습니다. 그렇지 않으면 해당 패턴이 명시적으로 지원되어야 합니다.

UI 자동화 컨트롤 패턴 Microsoft Active Accessibility 역할
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON 및 accDefaultAction 속성의 값이 NULL이 아닌 기타 역할입니다.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern accValue 속성 값이 NULL이 아닌 경우 ROLE_SYSTEM_TEXT(읽기 전용이 아닌 경우), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX 및 기타 역할입니다.
WindowPattern 최상위 Microsoft Win32 HWND에서 자동으로 지원됩니다.

 

UI 자동화 속성 변경 이벤트에 대한 WinEvents

IAccessible에 대해 정의된 이벤트 외에도 다음 이벤트 식별자도 정의되며 해당 UI 자동화 속성에 대한 속성 변경 이벤트로 IAccessibleEx 구현과 함께 사용될 수 있습니다. IAccessible에 대해 정의된 이벤트와 동일한 메커니즘을 사용합니다. 자세한 내용은 WinEvents를 참조하세요.

IAccessibleEx 구현에 대한 WinEvent ID Microsoft Active Accessibility의 관련 WinEvent ID
UIA_AriaPropertiesPropertyId 없음
UIA_AriaRolePropertyId 없음
UIA_ControllerForPropertyId 없음
UIA_DescribedByPropertyId 없음
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId 없음
UIA_InputDiscardedEventId 없음
UIA_InputReachedOtherElementEventId 없음
UIA_InputReachedTargetEventId 없음
UIA_IsDataValidForFormPropertyId 없음
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId 없음
UIA_MultipleViewCurrentViewPropertyId 없음
UIA_ScrollHorizontallyScrollablePropertyId 없음
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId 없음
UIA_ScrollVerticallyScrollablePropertyId 없음
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId 없음
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

위의 이벤트에는 EVENT_OBJECT_ 값이 나열되고 IAccessibleEx 구현은 나열된 변경된 이벤트 외에 이 이벤트를 발생시켜야 합니다. 이렇게 하면 기존 IAccessibleEx 클라이언트 코드가 계속 작동하면서 관심 있는 클라이언트에 보다 세부적인 이벤트 정보를 전달할 수 있습니다.

WinEvents

IAccessibleEx 인터페이스