Windows Vista의 터치 입력 지원

Windows Vista부터 태블릿 PC 기술은 터치 가능 디지타이저를 사용하는 태블릿 PC의 터치 입력을 지원합니다. 이 지원에는 입력에 손가락을 사용할 때 Windows를 대상으로 지정하고 명령하는 데 도움이 되는 향상된 사용자 인터페이스가 포함되어 있습니다.

터치 디지타이저 지원

펜 및 터치 입력이 배타적이지 않음

펜 및 터치 입력이 InkCollector, InkOverlayRealTimeStylus 애플리케이션에서 상호 배타적이라고 가정하지 마세요.

Windows Vista에서는 시스템에서 펜을 인식할 때 터치 입력을 무시합니다. 즉, 터치 스트로크가 끝나고 펜 스트로크가 시작됩니다. 나중에 변경될 수 있으므로 코드에서 펜 및 터치 입력이 상호 배타적이라고 가정해서는 안 됩니다.

기타 마우스 메시지 원본

사용자가 손가락이나 펜을 사용하여 상호 작용하는 경우에도 마우스 메시지의 다른 소스가 있습니다. 원본에는 터치 패드뿐만 아니라 계층화된 창 뒤에 있는 애플리케이션이 마우스가 애플리케이션 위로 이동하고 있음을 인식하도록 하기 위한 움직임이 포함됩니다.

터치 입력 사용자 인터페이스 사용 및 사용 안 함

애플리케이션의 요구 사항에 따라 터치 입력 사용자 인터페이스를 사용하거나 사용하지 않도록 설정할 수 있습니다. 이렇게 하려면 창 프로시저에서 운영 체제 창 메시지를 가로채 Windows 메시지를 수정합니다. 애플리케이션에서 WndProc 을 재정의하여 이러한 메시지를 가로챌 수 있습니다. 다음 C# 의사 코드는 터치 입력 사용자 인터페이스를 사용하거나 사용하지 않도록 설정하는 방법을 보여 줍니다. 또한 코드는 동일한 기술을 사용하여 길게 누르기 제스처를 사용하지 않도록 설정하는 방법을 보여줍니다. 이 메서드는 스타일러스를 사용하지 않도록 설정하는 데도 작동합니다.

const int WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS = 716;

const uint SYSTEM_GESTURE_STATUS_NOHOLD           = 0x00000001;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON  = 0x00000100;
const uint SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF = 0x00000200;

protected override void WndProc(ref Message msg)
{
    switch (msg.Msg)
    {
        case WM_TABLET_QUERY_SYSTEM_GESTURE_STATUS:
        {
            uint result = 0;
            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_NOHOLD;
            }

            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEON;
            }

            if (...)
            {
                result |= SYSTEM_GESTURE_STATUS_TOUCHUI_FORCEOFF;
            }

            msg.Result = (IntPtr)result;
        }
        break;

        default:
            base.WndProc(ref msg);
            break;
    }
}

Windows Touch