WM6.5手势支持

本文介绍了WM6.5 SDK中新增的手势支持API,包括手势动作相关的头文件及消息处理函数等内容。详细解释了如何通过处理WM_GESTURE消息实现手势操作,如平拖、滚动等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WM6.5 SDK新增了对手势的支持API,作为触摸屏的一种特殊的操作方式,用来代替滚动条的功能,且会带来比滚动条更好的体验。这种手势操作是一种物理特征的操作,flash中有很多这种物理特征的操作算法,比如重力特征,浮力特征,柔性特征。对此在按装WM6.5新增SDK时,会有sample

头文件

gesture.h:手势动作相关属性的定义

GesturePhysicsEngine.h:手势动作主结构体,主操作函数

WindowAutoGesture.h:手势动作配置结构体,配置函数

对于手势操作,首先要求响应WM_GESTURE消息,这个消息是手势动作触发的,消息参数的wParam是在gesture.h中定义的动作ID,表示手势在哪个阶段:

GID_PAN:平拖,表示触笔点压屏幕并开始拖动。

GID_SCROLL:拖动结束的滚动处理,触笔拖动后抬起处理,

GID_END:拖动结束处理,与GID_SCROLL的不同是这个动作无论怎样拖动结束一定会触发,而GID_SCROLL只在需要做缓冲的时候才会触发,所谓需要做缓冲的时个就是所谓的手势了

消息参数lParam是手势结构体(GESTUREINFO)的HandleGESTUREINFO结构体包含了当前手势相关的信息:

//typedef struct tagGESTUREINFO

//{

//   UINT cbSize;                结构尺寸

//   DWORD dwFlags;              手势标志位,标志手势当前的状态,是起始(GF_BEGIN),惯性(GF_INERTIA),结束(GF_END

//   DWORD dwID;                 /* Gesture ID */

//   HWND hwndTarget;            /* HWND of target window */

//   POINTS ptsLocation;         手势起始点坐标

//   DWORD dwInstanceID;         /* Gesture Instance ID */

//   DWORD dwSequenceID;         /* Gesture Sequence ID */

//   ULONGLONG ullArguments;     /* Arguments specific to gesture */

//   UINT cbExtraArguments;      /* Size of extra arguments in bytes */

//} GESTUREINFO, * PGESTUREINFO;

另外还有来自目标窗口的数据是必须要记录的,有此数据必须保存:可显示区域,实际显示区域,超出区域(实际显示区域与可显示区域的差值),滚动位移。

消息处理函数

对于以上的消息我们需要建立消息处理函数,一个是定位函数,一个是非定位函数,非定位函数是一个缓冲效果的处理,因此在非定位函数中需要做SetTimer,而后在回调函数中执行目标界面的渐时刷新。定位函数负责立即将界面刷新到当前位置,并调用KillTimer终止非定位函数的定时器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值