직접 조작
직접 조작 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호출합니다. 애플리케이션은 직접 조작에 처리해야 하는 연락처와 해당 연락처에 반응해야 하는 뷰포트를 알 수 있습니다. 키보드 및 마우스 입력에는 direct 조작으로 적절하게 처리할 수 있도록 특수 pointerId 값이 있습니다.
위의 기본 사례에서 SetContact 호출되는 경우 다음과 같은 몇 가지 사항이 발생합니다.
- 사용자가 팬을 수행하면 WM/_POINTERCAPTURECHANGED 메시지가 애플리케이션에 전송되어 직접 조작에서 연락처가 사용되었음을 알립니다.
- 사용자가 이동을 이동하면 뷰포트는 DirectComposition 래퍼에서 화면 시각적 업데이트를 구동하는 데 사용되는 업데이트 이벤트를 실행합니다. 뷰포트에서 사용자가 이동하면 콘텐츠가 연락처 아래에서 원활하게 이동하는 것처럼 보입니다.
- 사용자가 연락처를 들어 올리면 콘텐츠가 관성 애니메이션으로 전환될 때 콘텐츠가 계속 이동하고 최종 휴식 장소에 도달할 때까지 점차 감속됩니다.
키보드 및 마우스 입력 처리
직접 조작을 사용하면 직접 조작으로 적절하게 처리할 수 있도록 ProcessInput API를 통해 애플리케이션 UI 스레드에서 키보드 및 마우스 메시지를 수동으로 전달할 수 있습니다.
DirectManipulation 및 HWND
직접 조작은 해당 창에 대한 포인터 입력 메시지를 수신하고 처리하기 위해 Win32 HWND와 연결됩니다. 직접 조작은 출력 값을 계산할 때 직접 조작 COM(구성 요소 개체 모델) 애플리케이션에서 구현된 개체에 대한 비동기 콜백을 만듭니다. 이러한 콜백은 개체에 적용된 변환에 대해 애플리케이션에 알릴 수 있습니다. 직접 조작은 활성화호출하여 지정된 HWND에서 활성화됩니다.
지원 설명서
DirectManipulation 여러 뷰포트 사용
DirectManipulation 사용하여 처리 입력
BUILD 2013: WCL-022: 터치, 마우스 및 펜 사용하여 데스크톱 앱을 멋지게 만듭니다.
직접 조작 샘플 사용하여 터치 입력 처리