2

C++ Windows Store 앱에서는 기본 창에 PointerPressed이라는 이벤트가 있습니다. 한 번 클릭하는 것과 달리 두 번 클릭을 감지하는 방법을 찾으려고합니다. 마우스 더블 클릭시 트리거되는 PointerPressed에 해당하는 이벤트가 표시되지 않습니다.Windows Store 앱에서 두 번 클릭을 감지하는 방법은 무엇입니까?

또한 PointerPressed 이벤트 인수를 확인했으며 단일 또는 두 번 클릭 여부에 대한 정보를 포함하지 않는 것 같습니다.

자사가 GestureRecognizerDoubleTapped 속성을 사용하지만, 제가 제스처 인식기를 사용하지 않는 경우 수행 할 쉽게 사용할 수 있나요? 간단한 마우스 더블 클릭을 감지 할 수있는 방법이 있습니까 ???

감사합니다.

편집 : XAML 또는 그와 같은 사용자 인터페이스를 사용하지 않고 Windows 스토어를 대상으로하는 순수 C++ Direct3D 응용 프로그램입니다.

+0

I 해요 혼란 나는 그것을 사용하지 않는 경우가있다 "다음 말을,"GestureRecognizer와 함께 할 수있는 쉬운 방법이있다 "라고 쉬운 방법이 아닙니다. " 네. 그것은 당신이 임의적으로 사물에 사용하지 않기로 결정할 때 일어나는 일입니다. 어떤 문제를 해결하려고합니까? – vcsjones

+0

죄송합니다. GestureRecognizer에는이 기능이 있지만 기본 창에는이 기능이 없습니다. – Deathicon

+0

CoreWindow 클래스 (http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.core.corewindow.aspx)에 DoubleTapped 이벤트가없는 이유는 무엇입니까? UIElement 또는 GestureRecognizer? 즉, 마우스 더블 클릭에 대해이를 달성하는 적절한 방법은 무엇입니까? – Deathicon

답변

1

Pointer.Timestamp 속성을 사용하여 마지막 마우스 누르기 이벤트 수신 이후 시간이 두 번 클릭 시간보다 작거나 같은지 확인하십시오. 여기

는 의사 코드입니다 :

static unsigned long long LastTimestamp = 0; 
static unsigned long long DoubleClickTimeMS = 250; 
if(event == mouse_down) 
{ 
    if((Pointer->Timestamp - LastTimestamp)/1000 <= DoubleClickTimeMS) 
    { 
     //switch event for a double-click 
     event = double_click; 
    } 
    LastTimestamp = Pointer->Timestamp; 
} 
1

이것은 질문에 대답하지 않지만 아마도 개념적으로 클릭은 이벤트입니다. 더블 클릭은 각각 두 개의 이벤트 인 두 번의 클릭으로 구성됩니다. 제스처는 여러 이벤트로 구성되기 때문에 실제로 더블 클릭이 제스처라는 것을 알 수 있습니다. 따라서 제스처 인식기를 사용해야합니다.

+0

그래서 기본적으로 마우스 만 지원한다고해도 제스처 인식기를 사용하지 않아도된다는 의미입니까? – Deathicon

1

UIElementDoubleTapped 이벤트가 있습니다. GestureRecognizer을 사용할 필요가 없습니다.

+0

그래,하지만 빈 창 (예 : DirectX 컨텍스트가있는 창)을 클릭하면 가져 오는 방법은 무엇입니까? – Deathicon

+0

아직도'SwapChainPanel'에서 가져야한다고 생각합니다. –

+0

XAML에서 응용 프로그램을 개발하고 있지 않습니다. Windows Store 용 순수 Direct3D 앱이므로 _panel_을 사용하지 않습니다. – Deathicon

관련 문제