我们正在努力为WinForms中的控件提供触摸调整大小支持,我们的要求是在触摸应用程序时显示触摸大小调整PopUp,并在发生MouseUp
或MouseDown
事件时关闭PopUp。
我们可以使用常量值WM_GESTURE = 0x0119
来区分触摸,但PointerUp
和PointerDown
在触摸时也变为TRUE
,我们无法区分从其他事件中触摸鼠标。
有没有办法专门识别鼠标?
switch (m.Msg)
{
case WM_TOUCH:
IsTouchEnabled = true;
break;
case WM_POINTERUP:
IsTouchEnabled = false;
break;
case WM_POINTERDOWN:
IsTouchEnabled = false;
break;
}
由于
答案 0 :(得分:2)
您可以使用下面的 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();