다음을 통해 공유


Windows 터치 제스처 샘플(MTGestures)

이 섹션에서는 Windows 터치 제스처 샘플에 대해 설명합니다.

Windows 터치 제스처 샘플은 제스처 메시지를 사용하여 WM_GESTURE 메시지를 처리하여 GDI(그래픽 장치 인터페이스)에서 렌더링한 상자를 변환, 회전 및 크기 조정하는 방법을 보여 줍니다. 다음 스크린샷은 샘플이 실행 중일 때의 모양을 보여줍니다.

스크린샷은 검은색 윤곽선 흰색 사각형이 화면에 회전된 상태로 표시된 Windows 터치 제스처 샘플을 실행 중일 때를 보여줍니다

이 샘플의 경우 제스처 메시지는 제스처 엔진에 전달된 다음, 그리기 개체에 대한 메서드를 호출하여 이러한 명령을 처리하는 메서드가 있는 개체를 변환, 회전 및 크기 조정합니다. 샘플의 작동 방식을 보여 주려면 두 손가락 탭 명령을 사용하여 렌더링된 상자에서 대각선을 사용하거나 사용하지 않도록 설정하는 단계를 고려합니다. 사용자는 프로그램에서 처리하는 메시지를 생성하는 두 손가락 탭 제스처를 수행합니다. 메시지가 처리되면 그리기 개체에서 대각선을 렌더링할지를 결정하는 부울 값을 전환하고, 이후 개체가 대각선을 렌더링합니다.

다음 코드에서는 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);
    }

다중 터치 제스처 애플리케이션(C#), 멀티 터치 제스처 애플리케이션(C++), Windows Touch 샘플