【发布时间】:2018-11-13 05:14:19
【问题描述】:
为了处理像捏合这样的触摸手势,我在WndProc 控件中调用了覆盖方法中的SetGestureConfig 方法。
我想将此方法仅用于捏合手势而不是 GC_ALLGESTURES。
这里是代码
switch (m.Msg)
{
case WM_GESTURENOTIFY:
{
GESTURECONFIG gc = new GESTURECONFIG();
gc.dwID = 0;
gc.dwWant = GC_ALLGESTURES;
gc.dwBlock = 0;
bool result = SetGestureConfig(
handle,
0,
1,
ref gc,
_gestureConfigSize
);
if (!result)
{
throw new Exception("Error in execution of SetGestureConfig");
}
}
break;
//... other codes if any
}
在使用此代码之前,当我在控件上触摸和移动手指时,将调用控件的OnMouseMove 覆盖方法。但是用了这段代码之后,就不是这样了。
我正在分别处理与手势相关的功能,例如捏合、平移等,并且工作正常。
只有在捏合手势之后才能进行平移。如果在控件上执行了捏合手势,则应在触摸移动时执行平移。如果没有在控件上执行捏合手势,那么我希望在触摸移动期间触发默认的鼠标移动事件
但是调用SetGestureConfig方法,不会触发默认的鼠标移动事件。
我应该在没有捏合的平移手势期间手动调用OnMouseMove 吗?或者是否应该在调用SetGestureConfig 方法时进行任何修改以避免在平移手势期间阻塞OnMouseMove。
【问题讨论】:
标签: c# winforms onmousemove