Upload
sung-ki-choi
View
3.945
Download
8
Embed Size (px)
DESCRIPTION
Citation preview
Touch UX with win32 APIwin32 API 를 이용해 윈도우 7 의 멀티 터치 구현하기2010. 3. 8. Windows 7 Technical Briefing
최 성 기http://[email protected] Soft
Agenda
• Intro : 멀티 터치
• 터치 프로그래밍 준비사항
• win32 API 로 터치 인식하기
• Reference
Touch Interface
• UX( 사용자 경험 ) 분야의 가장 뜨거운 이슈• 터치형 인터페이스는 계속 성장할 전망
Multi-Touch is Here
http://cyberimpacts.com/,http://www.intomobile.com/2007/03/11/apple-iphone-disappointing-lcd-screen.html
• 싱글터치는 기존 마우스 인식과 유사 .• 싱글 터치를 넘어 멀티 터치의 시대로 .• 멀티터치의 지원으로 표현력은 크게 증폭
터치 프로그래밍 준비사항
Visual Studio 2010
• 2010. 2. 9. RC 버전 공개 .• 2010. 4 월 정식 버전 출시 .• 2010. 6 월 한글판 출시 .
• 이전 컴파일러 + Windows 7 SDK -> 개발가능
하드웨어 에뮬레이터
• http://multitouchvista.codeplex.com/ • 멀티터치 인식 드라이버 ( 오픈소스 )
터치 프로그래밍 : 단계별 적용
1Good
2Better
3Best
터치 프로그래밍 : 단계별 적용
• Doing nothing!• Windows 7 에서 실행하기만 하면 얻는 기능
1Good
2Better
3Best
터치 프로그래밍 : 단계별 적용
• WM_GESTURE• 적은 수정비용으로 기본적인 동작 구현
1Good
2Better
3Best
터치 프로그래밍 : 단계별 적용
• WM_TOUCH• 가장 강력하고 유연한 기능 구현 가능
3Best
2Better
1Good
Step 1. Good
Window 7 의 기본 제공 터치 UX
Demo
터치 프로그래밍 : 단계별 적용
• WM_GESTURE• 적은 수정비용으로 기본적인 동작 구현
1Good
2Better
3Best
GetSystemMetrics()
• GetSystemMetrics()– SM_DIGITIZER : 입력장치 상태 확인– SM_TABLETPC : 타블렛 pc 여부 확인– SM_MAXIMUMTOUCHES : 최대 동시입력 개수
WM_GESTURE 의 9 가지 제스처
http://msdn.microsoft.com/en-us/library/dd940543(VS.85).aspx
WM_GESTURE 의 9 가지 제스처
Panning Selection / Drag
Rotate Zoom
WM_GESTURE 의 9 가지 제스처
Press and Tap Press and Hold
Two-Finger Tap Flicks
WM_GESTURENOTIFY
• SetGestureConfig( … )
• 원하는 제스쳐만을 활성화 해준다 .
GC_ALLGESTUREGC_PANGC_PAN_WITH_SINGLE_FINGURE_VERTICALLYGC_PAN_WITH_SINGLE_FINGURE_HORIZONTAL
LYGC_PAN_WITH_INERTIA
WM_GESTURE
• 사용자가 응용프로그램 윈도우에 제스처를 수행했음을 알려줌 .
• 제스처의 중심좌표와 , 각 제스처에 따른 추가 정보들을 포함
• lParam 으로 GESTUREINFO 구조체를 얻는다 .
struct GESTUREINFO
Panning 제스처의 메시지 예시WM_GESTURENOTIFYWM_GESTURE (GID_BEGIN)WM_GESTURE (GID_PAN, GF_BEGIN)WM_GESTURE (GID_PAN, no flags)…WM_GESTURE (GID_PAN, GF_INERTIA)…WM_GESTURE (GID_PAN, GF_END)WM_GESTURE (GID_END)
Step 2. Better
WM_GESTURE 를 통한 구현
Demo
터치 프로그래밍 : 단계별 적용
• WM_TOUCH• 가장 강력하고 유연한 기능 구현 가능
3Best
2Better
1Good
Mouse Messages &GetMessageExtraInfo()
• GetMessageExtraInfo() 함수를 이용해메시지의 추가정보를 얻을 수 있다 .
• Mouse up / down 메시지는 터치나 펜으로 입력된 경우를 구분할 수 있다 .
• Ex) Window 7 의 기본 Mouse 입력 처리
WM_TOUCH
• 가장 직접적인 형태의 터치 데이터를 제공• 마우스 메시지와 유사한 컨셉• 이동 , 회전 , 줌 변환을 동시 적용 가능 .
• Finger painting• Custom Gestures• Feeding higher-level controls ( ex. Manipula-
tion )
WM_TOUCH 가 전달되도록 설정• BOOL RegisterTouchWindow( … )
• WM_GESTURE 대신 WM_TOUCH 를 받는다 .
• TWF_WANTPALM : 반응 속도 추가설정 가능
Step 3. Best
WM_TOUCH 를 통한 구현
Demo
터치 프로그래밍 : 단계별 적용
• Doing nothing!• Windows 7 에서 실행하기만 하면 얻는 기능
• WM_GESTURE• 적은 수정비용으로 기본적인 동작 구현
• WM_TOUCH• 가장 강력하고 유연한 기능 구현 가능
Microsoft Confidential
Resources
• Windows Developer Center (MSDN)– http://msdn.microsoft.com/en-us/windows
• Windows 7 Training Kit– Channel 9 - http://channel9.msdn.com/learn/
windows
• Windows 7 Developers Blog– http://windowsteamblog.com/blogs/developers/
default.aspx
• Windows 7 on Channel 9 – http://channel9.msdn.com/windows