Windows 터치 제스처 샘플(MTGestures)
이 섹션에서는 Windows 터치 제스처 샘플에 대해 설명합니다.
Windows 터치 제스처 샘플은 제스처 메시지를 사용하여 WM_GESTURE 메시지를 처리하여 GDI(그래픽 디바이스 인터페이스)에서 렌더링한 상자를 변환, 회전 및 크기 조정하는 방법을 보여 줍니다. 다음 스크린샷은 샘플이 실행 중일 때 어떻게 보이는지 보여줍니다.
이 샘플의 경우 제스처 메시지는 제스처 엔진에 전달된 다음, 그리기 개체에 대한 메서드를 호출하여 이러한 명령을 처리하는 메서드가 있는 개체를 변환, 회전 및 크기 조정합니다. 샘플의 작동 방식을 보여 주려면 두 손가락 탭 명령을 사용하여 렌더링된 상자에서 대각선을 사용하거나 사용하지 않도록 설정하는 단계를 고려합니다. 사용자는 프로그램에서 처리하는 메시지를 생성하는 두 손가락 탭 제스처를 수행합니다. 메시지가 처리되면 그리기 개체에서 대각선을 렌더링하기 위해 부울을 토글하고 개체는 대각선을 렌더링합니다.
다음 코드에서는 WndProc 메서드에서 제스처 메시지를 제스처 엔진에 전달하는 방법을 보여 줍니다.
case WM_GESTURE:
// The gesture-processing code is implemented in the CGestureEngine
// class.
return g_cGestureEngine.WndProc(hWnd,wParam,lParam);
break;
다음 코드는 제스처 엔진이 두 손가락 탭 명령을 처리하는 방법을 보여 줍니다.
// Two-finger tap command
void CMyGestureEngine::ProcessTwoFingerTap(void)
{
if(_pcRect)
{
_pcRect->ToggleDrawDiagonals();
}
}
다음 코드에서는 그리기 개체가 대각선을 전환하는 방법을 보여 줍니다.
void ToggleDrawDiagonals(void){_bDrawDiagonals = !_bDrawDiagonals;}
다음 코드에서는 개체가 그리기 메서드에서 대각선 렌더링 방법을 보여 줍니다.
if(_bDrawDiagonals)
{
// draw diagonals
MoveToEx(hdc,ptRect[0].x,ptRect[0].y,NULL);
LineTo(hdc,ptRect[2].x,ptRect[2].y);
MoveToEx(hdc,ptRect[1].x,ptRect[1].y,NULL);
LineTo(hdc,ptRect[3].x,ptRect[3].y);
}