[部分資訊涉及預售產品,可能在商業發行前經過大幅修改。 Microsoft 對此處提供的資訊不作明示或暗示的任何保證。]
擷取觸控板專用指標資訊。 根據你需要單一指標還是整幀,以及需要目前狀態還是完整歷史紀錄,有四種變體可供選擇。
語法
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);
參數
- 指標
-
用來擷取資訊的指標識別碼。
- 條目計數 (歷史變體)
-
一個指標指向指定緩衝區中項目數量的值。 輸入時,指定緩衝區大小。 輸出時,會收到寫入的條目數量。
- 指標計數 (幀變體)
-
一個指向指定框架中指標數量的值的指標。 輸入時,指定緩衝區大小。 輸出時,會接收寫入的指標數量。
- 觸控板資訊
-
一個指向接收觸控板資訊的 POINTER_TOUCH_INFO 結構的指標。 可以是 NULL 來查詢所需的緩衝區大小。
返回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充錯誤資訊,請呼叫 GetLastError。
備註
擷取與指定指標 ID 相關的觸控板指標輸入。 「框架」包含所有目前與指標 ID 相關輸入目標的現行啟動接觸點。 「歷史」包括因目標未及時脫隊而與當前輸入合併的任何輸入。
指標輸入以 POINTER_TOUCH_INFO 結構回傳,就像這些 API 的觸控等效物一樣,因為延伸的指標欄位在觸控與觸控板輸入時相同。
這些函式僅在處理 WM_POINTER 觸控板輸入訊息時(經 RegisterTouchpadCapableWindow 或 RegisterTouchpadCapableThread 註冊為觸控板支援後)才應呼叫。
觸控板的指標輸入與其他指標裝置類型相比,在功能上有些差異:
- ptPixelLocation 與 ptPixelLocationRaw 欄位相同,包含手勢開始時滑鼠指標的位置,且在手勢持續時間內不會改變。
- ptHimetricLocation 與 ptHimetricLocationRaw 欄位相同,包含接觸點相對於裝置的位置。
- GetPointerDeviceRects 會回傳螢幕上的虛擬桌面,以及裝置 rect 的觸控板尺寸。 雖然上述位置位於這些矩陣的範圍內,但兩者之間並無關聯。 對於其他指標裝置類型,對應的 rect 中,相關位置相對位置相同,但觸控板輸入則不同。
- 當初次接收輸入串流時,第一與第二輸入幀之間的每次接觸可能存在顯著的空間與時間間隙。 當系統仍在對觸控板輸入進行消歧義時,輸入幀會被捨棄。 如果系統判斷有手勢正在進行,會先合成一個較早的影格作為聯絡人的 POINTER_FLAG_DOWN 輸入,讓輸入目標在判斷輸入是否達到手勢辨識閾值時能利用這些資訊。 若輸入用於內容操作,應注意避免內容一開始就「跳動」,這可能是因為接觸者的空間移動直接作為內容操作而發生。
- 如果指標輸入被傳送到互動上下文 API(Interaction Context API)以進行手勢識別:
- 在將輸入到互動上下文時,必須使用 ProcessPointerFramesInteractionContext2 和 BufferPointerPacketsInteractionContext2。
- 只能進行操作手勢輸出(無法辨識點擊與按鍵,因為系統只會在這些手勢無法再出現時產生觸控板 WM_POINTER 輸入)。
- 若互動上下文設定為以螢幕座標回傳輸出,則輸出會依含滑鼠指標的顯示比例因子縮放,因此觸控板上的相同手勢輸出無論顯示比例如何,都能產生相同的有效手勢輸出。
- 若設定為 himetric 輸出,則相同的手勢無論滑鼠指標顯示為何,都會產生相同的結果。 輸出會根據輸入速度進行縮放,因此在相同物理距離下,手指動作越快,輸出幅度越大。
- 輸出會避免如上所述的「跳躍」,並可直接應用於內容進行操作。
要求
| 需求 | 價值 |
|---|---|
| 最低支援的用戶端 | Windows 11 [僅限桌面應用程式] |
| 最低支援的伺服器 | 不支援 |
| Header | Winuser.h(包含 Windows.h) |
| 圖書館 | User32.lib |
| DLL | User32.dll(序數為 2691(GetPointerTouchpadInfo)、序數為 2692(GetPointerTouchpadInfoHistory)、序數為 2693(GetPointerFrameTouchpadInfo)、序數為 2694(GetPointerFrameTouchpadInfoHistory) |