将GID_ZOOM手势发送到活动窗口

时间:2016-02-18 08:24:04

标签: c++ windows winapi touch gesture

如何将缩放手势发送到当前活动窗口? 我尝试创建一个GESTUREINFO结构但我不知道如何正确传递结构。到目前为止,这是我得到的。

GESTUREINFO gi;
POINT pt;
ZeroMemory(&gi, sizeof(GESTUREINFO));
gi.dwID = GID_ZOOM;
GetCursorPos(&pt);
gi.ptsLocation.x = pt.x;
gi.ptsLocation.y = pt.y;
gi.ullArguments = value;
gi.cbSize = sizeof(GESTUREINFO);

::SendMessage(hwnd, WM_GESTURE, reinterpret_cast<WPARAM>(&gu.ullArguments), reinterpret_cast<LPARAM>(&gi));

我发送WPARAM和LPARAM的方式是错误的吗?

1 个答案:

答案 0 :(得分:2)

您无法使用SendMessage伪造输入。 WM_GESTURE也不例外。虽然 wParam 易于构建,但系统不提供API来为GESTUREINFO创建句柄,需要将其作为 lParam传递

从Windows 8开始,Touch Injection API允许您为任意目标生成触摸输入。请注意,触摸输入本质上比鼠标输入更复杂(因为接触区域大小,多点触摸,压力和其他因素),所以要准备它不像通过调用{{来模拟鼠标输入那么简单3}}