2016-06-01 74 views
1

私たちはWinFormsでのコントロールのためのタッチリサイズのサポートを提供しており、私たちの要求はMouseUpまたはMouseDownイベントが発生したときにアプリケーションに触れ、PopUpを閉じるときにタッチリサイズPopUpを表示することでした。触れたときC#WinFormsのWndProcでタッチとマウスを区別する方法は?

我々が一定値 WM_GESTURE = 0x0119を使用してタッチを異なること

が、PointerUpPointerDownTRUEになっているし、我々は他のイベントからのマウスのタッチを異なるすることはできません。

マウスを特定する方法はありますか?

switch (m.Msg) 
{     
    case WM_TOUCH: 
     IsTouchEnabled = true; 
     break; 
    case WM_POINTERUP: 
     IsTouchEnabled = false; 
     break; 
    case WM_POINTERDOWN: 
     IsTouchEnabled = false; 
     break; 
} 

おかげ

答えて

1

あなたは以下のようなGetMessageExtraInfoメソッドを使用して、タッチダウンとマウスを下に区別することができます。

protected override void OnMouseDown(MouseEventArgs e) 
    { 
     Console.WriteLine("IsTouch: " + IsTouch()); 
     base.OnMouseDown(e); 
    } 

    public bool IsTouch() 
    { 
     uint extra = GetMessageExtraInfo(); 
     bool isTouchOrPen = ((extra & 0xFFFFFF00) == 0xFF515700); 

     if (!isTouchOrPen) 
      return false; 

     bool isTouch = ((extra & 0x00000080) == 0x00000080); 

     return isTouch; 
    } 

    [DllImport("user32.dll")] 
    private static extern uint GetMessageExtraInfo(); 
関連する問題