GetPointerTouchpadInfo 函式

[部分資訊涉及預售產品,可能在商業發行前經過大幅修改。 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 觸控板輸入訊息時(經 RegisterTouchpadCapableWindowRegisterTouchpadCapableThread 註冊為觸控板支援後)才應呼叫。

觸控板的指標輸入與其他指標裝置類型相比,在功能上有些差異:

  • ptPixelLocationptPixelLocationRaw 欄位相同,包含手勢開始時滑鼠指標的位置,且在手勢持續時間內不會改變。
  • ptHimetricLocationptHimetricLocationRaw 欄位相同,包含接觸點相對於裝置的位置。
  • GetPointerDeviceRects 會回傳螢幕上的虛擬桌面,以及裝置 rect 的觸控板尺寸。 雖然上述位置位於這些矩陣的範圍內,但兩者之間並無關聯。 對於其他指標裝置類型,對應的 rect 中,相關位置相對位置相同,但觸控板輸入則不同。
  • 當初次接收輸入串流時,第一與第二輸入幀之間的每次接觸可能存在顯著的空間與時間間隙。 當系統仍在對觸控板輸入進行消歧義時,輸入幀會被捨棄。 如果系統判斷有手勢正在進行,會先合成一個較早的影格作為聯絡人的 POINTER_FLAG_DOWN 輸入,讓輸入目標在判斷輸入是否達到手勢辨識閾值時能利用這些資訊。 若輸入用於內容操作,應注意避免內容一開始就「跳動」,這可能是因為接觸者的空間移動直接作為內容操作而發生。
  • 如果指標輸入被傳送到互動上下文 API(Interaction Context API)以進行手勢識別:
    • 在將輸入到互動上下文時,必須使用 ProcessPointerFramesInteractionContext2BufferPointerPacketsInteractionContext2
    • 只能進行操作手勢輸出(無法辨識點擊與按鍵,因為系統只會在這些手勢無法再出現時產生觸控板 WM_POINTER 輸入)。
    • 若互動上下文設定為以螢幕座標回傳輸出,則輸出會依含滑鼠指標的顯示比例因子縮放,因此觸控板上的相同手勢輸出無論顯示比例如何,都能產生相同的有效手勢輸出。
    • 若設定為 himetric 輸出,則相同的手勢無論滑鼠指標顯示為何,都會產生相同的結果。 輸出會根據輸入速度進行縮放,因此在相同物理距離下,手指動作越快,輸出幅度越大。
    • 輸出會避免如上所述的「跳躍」,並可直接應用於內容進行操作。

要求

需求 價值
最低支援的用戶端 Windows 11 [僅限桌面應用程式]
最低支援的伺服器 不支援
Header Winuser.h(包含 Windows.h)
圖書館 User32.lib
DLL User32.dll(序數為 2691(GetPointerTouchpadInfo)、序數為 2692(GetPointerTouchpadInfoHistory)、序數為 2693(GetPointerFrameTouchpadInfo)、序數為 2694(GetPointerFrameTouchpadInfoHistory)

另請參閱