在Windows窗体控件中,我已使用 SetGestureConfig 方法正确配置了触摸手势。它正确配置了控件的触摸手势。在某些情况下,我需要检查控件是否正确启用了特定的触摸手势。我尝试使用 GetGestureConfig 方法来检查是否启用了特定的手势。但是这种方法总是 单独返回错误值。此外,我尝试使用 GetLastError()方法来获取错误消息,但它始终返回值0 。请找到以下代码,
int gestureConfigSize = Marshal.SizeOf(new GESTURECONFIG());
GESTURECONFIG gc = new GESTURECONFIG();
gc.dwID = 0;
gc.dwWant = WindowMessages.GC_ALLGESTURES;
gc.dwBlock = 0;
if (SetGestureConfig(control.Handle, 0, 1, ref gc, gestureConfigSize))
MessageBox.Show("Zoom gesture configured properly");
GESTURECONFIG gc1 = new GESTURECONFIG();
gc1.dwID = 0;
gc1.dwWant = WindowMessages.GC_ALLGESTURES;
gc1.dwBlock = 0;
GESTURECONFIG[] gestures = new GESTURECONFIG[] { gc1 };
bool value = GetGestureConfig(control.Handle, 0, 0, 1, gestures, gestureConfigSize);
if (!value)
{
int errorValue = GetLastError();
}
请在下面找到Dll导入代码,
[DllImport("Kernel32.dll")]
static extern Int32 GetLastError();
[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetGestureConfig(IntPtr hWnd, int dwReserved, int cIDs, [In] [Out] GESTURECONFIG[] pGestureConfig, int cbSize);
[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetGestureConfig(IntPtr hWnd, int dwReserved, int cIDs, ref GESTURECONFIG pGestureConfig, int cbSize);
[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetGestureConfig(IntPtr hWnd, int dwReserved, int flags, int cIDs, [In] [Out] GESTURECONFIG[] pGestureConfig, int cbSize);
请使用GetGestureConfig方法建议如何检查是否为控件启用了触控手势。
感谢。
答案 0 :(得分:0)
[DllImport]
GetLastError,请致电Marshal.GetLastError
(有关详情,请参阅https://blogs.msdn.microsoft.com/adam_nathan/2003/04/25/getlasterror-and-managed-code/)。SetLastError=true
中设置[DllImport]
标记,以确保捕获错误。