다음을 통해 공유


끌어서 놓기 지원 UI 자동화

Microsoft UI 자동화 끌어서 놓기 시나리오, 끌어서 놓기 컨트롤 패턴 및 DropTarget 컨트롤 패턴을 지원하기 위한 두 가지 컨트롤 패턴을 정의합니다. 끌 수 있는 요소에 대한 끌기 컨트롤 패턴과 끌기된 요소를 받을 수 있는 요소에 대한 DropTarget 컨트롤 패턴을 구현합니다. 즉, 놓기 대상입니다. 두 가지 컨트롤 패턴은 보조 기술이 접근성 사용자가 끌어서 놓기 작업을 완료하는 데 사용할 수 있는 정보를 노출합니다.

스타일 끌기

끌기 가능 요소에 대한 끌기 컨트롤 패턴을 구현하는 경우 원본/대상 끌기 스타일을 구현할지 아니면 소스 전용 끌기 스타일을 구현할지 결정해야 합니다.

원본/대상 스타일

끌어서 놓기의 원본/대상 스타일에서 끌어온 요소("원본") 및 드롭 대상 요소("대상")는 고유하며 각각 고유한 이벤트 집합을 발생합니다. 원본/대상 스타일을 사용하는 끌기 작업의 수명 주기는 다음과 같습니다.

사용자가 끌기 작업을 시작하는 경우:

끌기 작업이 대상 영역에 들어갈 때:

끌기 작업이 대상 영역을 벗어나는 경우:

사용자가 대상이 아닌 항목 위로 끌어온 항목을 해제하는 경우:

사용자가 대상 위로 끌어간 항목을 해제하는 경우:

원본 및 대상 개체의 이벤트는 밀접하게 관련되어 있지만 고유합니다. 끌기 대상에 대한 데이터는 원본에서 가져온 반면 "발생할 수 있는 일"과 "발생한 일"에 대한 데이터는 대상에서 가져옵니다.

끌기 작업이 진행 중인 경우 끌기 항목은 작업이 완료되기 전에 횟수에 따라 대상 영역 안팎으로 끌 수 있습니다.

즉석에서 IDropTargetProvider::D ropTargetEffect 속성을 업데이트해야 하는 모든 드롭 대상은 해당 속성에 대해 추가 속성 변경 이벤트를 발생시켜야 합니다.

원본 전용 스타일

원본 전용 끌기 스타일을 사용하면 공급자가 놓기 대상을 구현하지 않도록 할 수 있습니다. 드롭 대상을 구현하지 않으면 구현 비용을 낮출 수 있지만 접근성 클라이언트 애플리케이션에 드롭을 받은 개체에 대한 정보는 제공하지 않습니다. 원본 전용 스타일을 사용하는 끌기 작업의 수명 주기는 다음과 같습니다.

사용자가 끌기 작업을 시작하는 경우:

끌기 작업이 대상 영역에 들어갈 때:

끌기 작업이 대상 영역을 벗어나는 경우:

사용자가 대상이 아닌 항목 위로 끌어온 항목을 해제하는 경우:

사용자가 대상 위로 끌어간 항목을 해제하는 경우:

여러 항목 끌기

공급자가 사용자가 동시에 여러 개체를 끌 수 있는 끌어서 놓기 작업을 구현하는 경우 공급자는 이전 섹션에 설명된 대로 소스/대상 또는 소스 전용 스타일을 사용하지만 약간의 차이가 있습니다. 사용자가 끌기 작업을 시작하면 공급자는 끌 항목의 전체 집합을 나타내는 master 원본 요소를 만듭니다. master 원본 요소는 끌어온 항목 집합을 대신하여 모든 이벤트를 발생합니다. 항목은 자체 이벤트를 발생하지 않습니다.

사용자가 끌기 작업을 시작하는 경우:

  • 공급자는 master 원본 요소를 만듭니다.
  • master 원본 요소는 DragStart(UIA_Drag_DragStartEventId) 이벤트를 발생합니다.
  • master 원본 요소는 IDragProvider::IsGrabbed 속성을 TRUE로 설정합니다.
  • master 원본 요소는 GetGrabbedItems 메서드가 목록을 검색할 수 있도록 끌기 중인 모든 항목을 포함하도록 catch된 항목 목록을 업데이트합니다.

해당 시점의 경우 master 원본 요소는 이전 섹션에서 설명한 대로 원본 요소의 역할과 동일한 역할을 수행합니다.

끌어서 놓기용 클라이언트 인터페이스

UI 자동화 클라이언트 애플리케이션은 IUIAutomationDragPatternIUIAutomationDropTargetPattern 인터페이스를 사용하여 UI 요소에서 끌어서 놓기 정보에 액세스합니다.