版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013183287/article/details/80417238
首先在OnInitDialog()中添加:
RegisterTouchWindow(TRUE, TWF_WANTPALM);
这个函数主要看第二个参数,及触控的类型的标志位,有两种:
TWF_FINETOUCH 设置 hWnd 为非合并触摸输入方式. 设置此标志将禁用防止手掌误触功能,从而减少获取WM_TOUCH 消息的延迟。如果您希望在用户触摸应用程序时尽可能快地做出响应,这样做非常有用。
TWF_WANTPALM 默认情况下,将启用防止手掌误触功能,并阻止将某些WM_TOUCH 消息发送到您的应用程序。如果您不希望接收因手掌接触引发的WM_TOUCH 消息,这样做非常有用。
之后就可以就接受触控消息了;
添加消息响应:
ON_MESSAGE(WM_TOUCH, OnTouch)
之后编写OnTouch函数:
头文件中:
LRESULT OnTouch(WPARAM wParam, LPARAM lParam);
源文件中:
LRESULT CIDPTouchMgrDlg::OnTouch(WPARAM wParam, LPARAM lParam)
{
UINT numInputs = (UINT)wParam;
TOUCHINPUT* TouchPts = new TOUCHINPUT[numInputs];
if (TouchPts == NULL)
return 0;
//GetTouchInputInfo 获取信息
if (GetTouchInputInfo((HTOUCHINPUT)lParam, numInputs, TouchPts, sizeof(TOUCHINPUT)))
{
for (UINT i = 0; i < numInputs; i++)
{
TOUCHINPUT ptTouch = TouchPts[i];//触控信息
//坐标点
int x = TOUCH_COORD_TO_PIXEL(ptTouch.x);
int y = TOUCH_COORD_TO_PIXEL(ptTouch.y);
...
}
}
//注意这里,销毁数据
CloseTouchInputHandle((HTOUCHINPUT)lParam);
delete[] TouchPts;
return 1;
}