직접 조작

직접 조작 API를 사용하면 멋진 팬을 만들고, 확대/축소하고, 사용자 환경을 끌 수 있습니다. 이를 위해 지역 또는 개체에서 터치 입력을 처리하고, 출력 변환을 생성하고, 변환을 UI 요소에 적용합니다. 직접 조작을 사용하여 오프 스레드 입력 처리, 선택적 오프 스레드 입력 적중 테스트 및 입력/출력 예측을 통해 응답성을 최적화하고 대기 시간을 줄일 수 있습니다.

직접 조작을 사용하여 터치 조작을 처리하는 모든 애플리케이션은 일반적인 사용자 상호 작용에 대한 지침을 준수하는 유체 Windows 8 애니메이션 및 상호 작용 피드백 동작을 표시합니다.

개발자 대상

직접 조작 API는 C/C++를 알고 있고 COM(구성 요소 개체 모델)을 잘 이해하고 Windows 프로그래밍 개념에 익숙한 숙련된 개발자를 위한 것입니다.

런타임 요구 사항

직접 조작은 Windows 8 도입되었습니다. 32비트 및 64비트 버전 모두에 포함되어 있습니다.

DirectManipulation을 사용하는 이유

간단하고 일관된 방식으로 상호 작용 처리

직접 조작은 지역 또는 개체의 동작 및 상호 작용을 미리 선언하여 작동합니다. 예를 들어 웹 페이지는 종종 이동 및 확대/축소에 대해 구성됩니다. 그런 다음 런타임에 입력은 간단한 API 호출을 통해 이 지역/개체와 연결됩니다. 이 시점부터 직접 조작은 입력 처리, 제약 조건 및 성격 적용 및 출력 변환 생성을 많이 수행합니다.

반응형 터치 애플리케이션 빌드

응답성을 최적화하고 대기 시간을 최소화하기 위해 직접 조작 처리는 UI 스레드와 별도의 독립 스레드에서 발생합니다. 결과적으로 출력 변환은 UI 스레드의 작업과 병렬로 실행할 수 있습니다. UI 스레드 활동에는 애플리케이션 논리, 렌더링, 레이아웃 및 프로세서에서 주기를 사용하는 다른 모든 항목이 포함될 수 있습니다.

구현 유연성

직접 조작에 포함된 인터페이스는 입력 처리, 상호 작용 인식, 피드백 알림 및 UI 업데이트에 대한 포괄적인 지원을 제공합니다. 인터페이스는 DirectComposition과 같은 시스템 서비스도 통합합니다.

기본 개념

가장 기본적인 직접 조작 구현은 뷰포트, 콘텐츠상호 작용으로 구성됩니다. 뷰포트는 사용자 상호 작용에서 입력을 수신하고 처리할 수 있는 지역입니다. 또한 최종 사용자에게 표시되는 콘텐츠의 영역이기도 합니다. 콘텐츠는 최종 사용자가 볼 수 있는 실제 개체이며 사용자 상호 작용에 대한 응답으로 이동하거나 스케일링하는 개체입니다. 직접 조작에서 지원하는 기본 사용자 상호 작용 ( 조작이라고도 함)은 이동 및 확대/축소입니다. 이러한 상호 작용은 각각 뷰포트 내의 콘텐츠에 번역 또는 크기 조정 변환을 적용합니다. 여러 뷰포트(각각 고유한 콘텐츠 포함)를 단일 창에서 구성하여 풍부한 UI 환경을 만들 수 있습니다.

이 그림에서는 이동 전후의 기본 직접 조작 구현을 보여줍니다.

이동 전후의 기본 직접 조작 구현입니다.

직접 조작을 초기화하는 동안 DCompDirectManipulationCompositor 개체가 인스턴스화되고 직접 조작과 연결됩니다. 이 개체는 시스템 작성기인 DirectComposition에 대한 래퍼입니다. 개체는 출력 변환을 적용하고 시각적 업데이트를 구동합니다.

연락처는 WM/_POINTERDOWN 메시지에 제공된 pointerId로 식별되는 터치 포인트를 나타냅니다. WM_POINTERDOWN 메시지가 수신되면 애플리케이션은 SetContact를 호출합니다. 애플리케이션은 직접 조작에게 처리해야 하는 연락처와 해당 연락처에 반응해야 하는 뷰포트를 알 수 있습니다. 키보드 및 마우스 입력에는 특수 pointerId 값이 있으므로 직접 조작으로 적절하게 처리할 수 있습니다.

위의 기본 사례에서 SetContact 가 호출되면 다음과 같은 몇 가지 사항이 발생합니다.

  • 사용자가 팬을 수행하면 직접 조작에서 연락처를 사용했음을 알리기 위해 WM/_POINTERCAPTURECHANGED 메시지가 애플리케이션으로 전송됩니다.
  • 사용자가 이동을 이동하면 뷰포트는 DirectComposition 래퍼에서 시각적 업데이트를 화면으로 구동하는 데 사용되는 업데이트 이벤트를 실행합니다. 뷰포트에서 사용자가 이동하면 콘텐츠가 연락처 아래에서 원활하게 이동하는 것처럼 보입니다.
  • 사용자가 연락처를 들어 올리면 콘텐츠가 관성 애니메이션으로 전환될 때 콘텐츠가 계속 이동하는 것을 볼 수 있으며, 최종 휴식 장소에 도달할 때까지 점차 감소합니다.

키보드 및 마우스 입력 처리

직접 조작을 사용하면 직접 조작으로 적절하게 처리할 수 있도록 ProcessInput API를 통해 애플리케이션 UI 스레드에서 키보드 및 마우스 메시지를 수동으로 전달할 수 있습니다.

DirectManipulation 및 HWND

직접 조작은 해당 창에 대한 포인터 입력 메시지를 수신하고 처리하기 위해 Win32 HWND와 연결됩니다. 직접 조작은 출력 값을 계산할 때 애플리케이션에서 구현되는 COM(직접 조작 구성 요소 개체 모델) 개체에 대한 비동기 콜백을 만듭니다. 이러한 콜백은 개체에 적용된 변환에 대해 애플리케이션에 알릴 수 있습니다. 직접 조작은 활성화를 호출하여 지정된 HWND에서 활성화됩니다.

지원 문서