2012-10-22 1 views
1

터치 스크린의 존재 여부를 감지해야하는 앱을 개발 중입니다. 에는 터치 스크린이 없다,Windows 8에서 터치 스크린 디스플레이를 감지하는 방법은 무엇입니까?

TouchCapabilities^ tc = ref new TouchCapabilities(); 

return tc->TouchPresent; 

문제는 내가이 터치 패드에 대해 true를 반환 노트북을 가지고있다 : 나는 대부분의 작동에 다음 코드를 사용하고 있습니다. 나는 다음 코드와 함께 터치 스크린이 존재하는지 감지하려고 시도했으나 터치 스크린 섹션 내부에서 결코 깨지지 않았다. 나는 HID에 대한 나의 이해가 자신감이 없다고 인정한다.

Windows::Foundation::Collections::IVectorView<PointerDevice^>^ devices = Windows::Devices::Input::PointerDevice::GetPointerDevices(); 

for (int i = 0; i < devices->Size; ++i) 
{ 
    PointerDevice^ pd = devices->GetAt(i); 

    PointerDeviceType pdt = pd->PointerDeviceType; 
    unsigned int contacts = pd->MaxContacts; 
    bool integrated = pd->IsIntegrated; 

    for (int j = 0; j < pd->SupportedUsages->Size; ++j) 
    { 
     PointerDeviceUsage pdu = pd->SupportedUsages->GetAt(j); 

     unsigned int usagePage = pdu.UsagePage; 

     if (usagePage == 0x0D) // 0x0D is the Digitizer HID Usage Page 
     { 
      unsigned int usage = pdu.Usage; 

      if (pdu.Usage == 0x04) // 0x04 is the Touch Screen HID Usage ID 
      { 
       // Should be touch screen but never goes in here 
      } 
     } 
    } 
} 

터치 스크린을 구체적으로 감지 할 수있는 방법이 있습니까? 그렇다면 일부 예제 코드를 볼 수 있습니까?

+0

Visual Studio 시뮬레이터가 실행중인 경우 시뮬레이터 외부에서 앱을 실행 중이더라도 TouchPresent에 대해 TRUE가 표시됩니다. 여기에는 밀접 할 수도 있고 그렇지 않을 수도 있습니다. –

+0

@ JimO'Neil 당신은 그것을 받아 들일 수 있도록 대답으로 올려 놓고 싶습니까? 시뮬레이터가 시스템에서 실행되고 있지는 않지만 시뮬레이터를 열고 닫으면 문제가 해결되었습니다. –

답변

1

TouchCapabilities.TouchPresent 트릭을해야합니다. 그러나 Visual Studio 시뮬레이터가로드되면 응용 프로그램이 로컬에서 (즉, 시뮬레이터 내에서가 아니라) 응용 프로그램을 실행하는 경우에도 터치 기능이 있다고보고합니다.

+0

아! 나는 시뮬레이터를 설치 했으므로, 내가 시뮬레이터를 설치하지 못했다는 것을 알 때 손이 닿았다고 말해주는 이유가 바로 그 것이다. 내가 할 수 있다면 +10! 감사. –

관련 문제