+ UIControl: 增加WIN10系统响应触摸屏的按下和弹起事件

This commit is contained in:
Sunny 2023-02-03 21:22:53 +08:00
parent 98a68dd995
commit 9fc4122102

View File

@ -22,12 +22,14 @@
* 2022-01-10: V3.1.0 * 2022-01-10: V3.1.0
* 2022-02-16: V3.1.1 * 2022-02-16: V3.1.1
* 2022-03-19: V3.1.1 * 2022-03-19: V3.1.1
* 2023-02-03: V3.3.1 WIN10系统响应触摸屏的按下和弹起事件
******************************************************************************/ ******************************************************************************/
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D; using System.Drawing.Drawing2D;
using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
namespace Sunny.UI namespace Sunny.UI
@ -991,5 +993,48 @@ namespace Sunny.UI
base.OnLostFocus(e); base.OnLostFocus(e);
this.Invalidate(); this.Invalidate();
} }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// WndProc窗口程序
////// 当按压屏幕时产生一个WM_POINTERDOWN消息时我们通过API函数 PostMessage 投送出一个WM_LBUTTONDOWN消息
////// WM_LBUTTONDOWN消息会产生一个相对应的鼠标按下左键的事件于是我们只要在mouse_down事件里写下处理过程即可
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#region WndProc
[DllImport("user32.dll")]
public static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
const int WM_POINTERDOWN = 0x0246;
const int WM_POINTERUP = 0x0247;
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_POINTERDOWN:
break;
case WM_POINTERUP:
break;
default:
base.WndProc(ref m);
return;
}
switch (m.Msg)
{
case WM_POINTERDOWN:
PostMessage(m.HWnd, WM_LBUTTONDOWN, (int)m.WParam, (int)m.LParam);
break;
case WM_POINTERUP:
PostMessage(m.HWnd, WM_LBUTTONUP, (int)m.WParam, (int)m.LParam);
break;
}
}
#endregion
} }
} }