[某些信息与预发行的产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
检索特定于触摸板的指针信息。 四种变体可用,具体取决于是否需要单个指针或整个帧,以及是否需要当前状态或完整历史记录。
Syntax
WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfo(
_In_ UINT32 pointerId,
_Out_writes_(1) POINTER_TOUCH_INFO *touchpadInfo);
WINUSERAPI
BOOL
WINAPI
GetPointerTouchpadInfoHistory(
_In_ UINT32 pointerId,
_Inout_ UINT32 *entriesCount,
_Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchpadInfo);
WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfo(
_In_ UINT32 pointerId,
_Inout_ UINT32 *pointerCount,
_Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchpadInfo);
WINUSERAPI
BOOL
WINAPI
GetPointerFrameTouchpadInfoHistory(
_In_ UINT32 pointerId,
_Inout_ UINT32 *entriesCount,
_Inout_ UINT32 *pointerCount,
_Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchpadInfo);
参数
- pointerId
-
要为其检索信息的指针的标识符。
- entriesCount (历史记录变体)
-
指向指定缓冲区中条目数的值的指针。 在输入时,指定缓冲区的大小。 在输出中,接收写入的条目数。
- pointerCount (Frame variants)
-
指向指定帧中指针数的值的指针的指针。 在输入时,指定缓冲区的大小。 在输出中,接收写入的指针数。
- touchpadInfo
-
指向接收触摸板信息的 POINTER_TOUCH_INFO 结构的指针。 可为 NULL 以查询所需的缓冲区大小。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。
注解
检索与指定指针 ID 关联的请求触摸板指针输入。 “frame”包括传送到与指针 ID 关联的输入相同的目标的所有当前活动联系人。 “history”包括由于目标未及时取消排队而与当前输入合并的任何输入。
由于触摸和触摸板输入的扩展指针字段相同,指针输入在 POINTER_TOUCH_INFO 结构中返回,就像这些 API 的触摸等效项一样。
只有在处理触摸板输入 WM_POINTER 消息时(通过 RegisterTouchpadCapableWindow 或 RegisterTouchpadCapableThread 注册为支持触摸板的后),才应调用这些函数。
与其他指针设备类型相比,触摸板的指针输入具有一些功能差异:
- ptPixelLocation 和 ptPixelLocationRaw 字段相同,并且包含鼠标指针在手势开始时的位置,并且不会在手势持续时间内更改。
- ptHimetricLocation 和 ptHimetricLocationRaw 字段相同,并且包含联系人相对于设备的位置。
- GetPointerDeviceRects 返回屏幕矩形的虚拟桌面和设备触控板的尺寸。 虽然上述位置将位于这些凹槽的边界内,但两者之间没有关系。 对于其他指针设备类型,各自的位置位于其相应凹槽内的相同相对位置,但这不是触摸板输入的情况。
- 最初接收输入流时,第一和第二个输入帧之间的每个接触可能存在重要的空间和时差。 虽然系统仍在触摸板输入上执行消除歧义,但会丢弃输入帧。 如果系统确定正在发生手势,它将合成联系人 POINTER_FLAG_DOWN 输入的早期帧,并首先传递它,以便输入目标可以在确定输入是否满足其手势识别阈值时使用信息。 如果输入用于内容操作,应注意避免在开始处“跳转”内容,如果联系人的空间运动在输入到达时直接应用内容操作,则可能会发生这种情况。
- 如果指针输入馈送到交互上下文 API 进行手势识别:
- 将输入馈送到交互上下文时,必须使用 ProcessPointerFramesInteractionContext2 和 BufferPointerPacketsInteractionContext2。
- 只能进行操作手势输出(无法识别点击和保留,因为系统只有在这些手势不再发生后才会生成触摸板 WM_POINTER 输入)。
- 如果将交互上下文配置为在屏幕坐标中返回其输出,则输出由包含鼠标指针的显示器缩放,以便触摸板上的相同手势产生相同的有效手势输出,而不考虑显示比例。
- 如果为 himetric 输出配置,则无论鼠标指针的显示如何,相同的手势都会生成相同的结果。 输出根据输入的速度进行缩放,以便更快的手指运动会导致相同物理手指距离的输出大小较大。
- 输出将避免如前所述“跳转”,并可直接应用于用于操作的内容。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 11 [仅限桌面应用] |
| 支持的最低服务器 | 无受支持的版本 |
| Header | Winuser.h (包括 Windows.h) |
| 图书馆 | User32.lib |
| DLL | User32.dll(适用于 GetPointerTouchpadInfo 的序号 2691、GetPointerTouchpadInfoHistory 的序号 2692、GetPointerFrameTouchpadInfo 的序号 2693、GetPointerFrameTouchpadInfo 序号 2694) |