POINTER_INFO 結構 (winuser.h)
包含所有指標類型通用的基本指標資訊。 應用程式可以使用 GetPointerInfo、GetPointerFrameInfo、GetPointerInfoHistory 和 GetPointerFrameInfoHistory 函式來擷取此資訊。
語法
typedef struct tagPOINTER_INFO {
POINTER_INPUT_TYPE pointerType;
UINT32 pointerId;
UINT32 frameId;
POINTER_FLAGS pointerFlags;
HANDLE sourceDevice;
HWND hwndTarget;
POINT ptPixelLocation;
POINT ptHimetricLocation;
POINT ptPixelLocationRaw;
POINT ptHimetricLocationRaw;
DWORD dwTime;
UINT32 historyCount;
INT32 InputData;
DWORD dwKeyStates;
UINT64 PerformanceCount;
POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;
成員
pointerType
指定指標類型的 POINTER_INPUT_TYPE 列舉值。
pointerId
類型: UINT32
唯一識別指標存留期的標識碼。 當指標第一次偵測到時存在,並在超出偵測範圍時結束其存在。 請注意,如果實體實體 (手指或手寫筆) 超出偵測範圍,然後再次傳回以偵測,則會被視為新的指標,而且可能會指派新的指標標識符。
frameId
類型: UINT32
來源裝置在單一輸入框架中回報更新的多個指標通用標識碼。 例如,平行模式多觸控數位板可能會向系統報告多個觸控聯繫人在單一更新中的位置。
請注意,畫面格標識符會指派為系統針對所有裝置上的所有指標回報輸入。 因此,此欄位可能不會在視窗接收的單一訊息系列中包含嚴格循序值。 不過,此欄位會針對單一裝置在相同輸入框架中報告的所有輸入更新,包含相同的數值。
pointerFlags
類型: POINTER_FLAGS
可能是指標 旗標 常數中旗標的任何合理組合。
sourceDevice
類型: HANDLE
處理可用於呼叫原始輸入設備 API 和數位板裝置 API 的來源裝置。
hwndTarget
類型: HWND
此訊息的目標視窗。 如果擷取指標,可能是因為透過此視窗進行連絡或明確使用指標擷取 API,所以這是擷取視窗。 如果未擷取指標,這是產生此訊息時指標所在的視窗。
ptPixelLocation
類型: POINT
指標的預測螢幕座標,以像素為單位。
預測值是根據數位板所報告的指標位置,以及指標的動作。 這項更正可補償視覺延遲,因為檢測和處理數位板上的指標位置固有延遲。 這適用於類型 PT_TOUCH的指標。 針對其他指標類型,預測值會與非預測值相同, (請參閱 ptPixelLocationRaw) 。
ptHimetricLocation
類型: POINT
指標的預測螢幕座標,以 HIMETRIC 單位為單位。
預測值是根據數位板所報告的指標位置,以及指標的動作。 這項更正可補償視覺延遲,因為檢測和處理數位板上的指標位置固有延遲。 這適用於類型 PT_TOUCH的指標。 針對其他指標類型,預測值會與非預測值相同, (請參閱 ptHimetricLocationRaw) 。
ptPixelLocationRaw
類型: POINT
指標的螢幕座標,以像素為單位。 如需調整的螢幕座標,請參閱 ptPixelLocation。
ptHimetricLocationRaw
類型: POINT
指標的螢幕座標,以 HIMETRIC 單位為單位。 如需調整的螢幕座標,請參閱 ptHimetricLocation。
dwTime
類型: DWORD
0 或訊息的時間戳,根據收到訊息的系統刻度計數。
應用程式可以在 dwTime 或 PerformanceCount 中指定輸入時間戳。 值不能比目前的刻度計數或 QueryPerformanceCount 更新, (插入線程的 QPC) 值。 一旦以時間戳插入框架之後,所有後續框架都必須包含時間戳,直到框架中的所有聯繫人都進入 UP 狀態為止。 也必須為聯繫人數組中的第一個專案提供自定義時間戳值。 忽略第一個元素之後的時間戳值。 自訂時間戳值必須在每個插入框架中遞增。
當指定 PerformanceCount 時,時間戳會在實際插入時轉換為目前的時間,以 .1 毫秒的解析度表示。 如果自定義 PerformanceCount 導致先前插入的相同 .1 毫秒視窗,則會傳回 ERROR_NOT_READY ,而且不會發生插入。 雖然插入不會立即因錯誤而失效,但下一次成功的插入必須有 PerformanceCount 值,該值至少為先前成功插入的 0.1 毫秒。 如果使用 dwTime ,也是如此。
如果在 InjectTouchInput 中同時指定 dwTime 和 PerformanceCount,則會傳回ERROR_INVALID_PARAMETER。
插入啟動之後,InjectTouchInput 無法在 dwTime 和 PerformanceCount 之間切換。
如果未指定 dwTime 和 PerformanceCount,InjectTouchInput 會根據呼叫的時間設定時間戳。 如果 InjectTouchInput 呼叫重複小於 0.1 毫秒,可能會傳回ERROR_NOT_READY。 錯誤不會立即使輸入失效,但插入應用程式必須再次重試相同的畫面,才能成功插入。
historyCount
類型: UINT32
已聯合至此訊息的輸入計數。 此計數符合 呼叫 GetPointerInfoHistory 可傳回的項目總數。 如果沒有聯合,則訊息所代表的單一輸入是 1。
InputData
dwKeyStates
類型: DWORD
指出在產生輸入時按下哪一個鍵盤修飾詞鍵。 可以是零,或來自 修飾詞索引鍵狀態的下列值組合。
POINTER_MOD_SHIFT – 按下 SHIFT 鍵。
POINTER_MOD_CTRL – 按下 CTRL 鍵。
使用 GetKeyState。
PerformanceCount
類型: UINT64
收到指標訊息 (dwTime) 的高精確度、64 位替代專案時,高解析度性能計數器的值。 當觸控數位板硬體在其輸入報告中支援掃描時間戳資訊時,可以校正此值。
ButtonChangeType
類型: POINTER_BUTTON_CHANGE_TYPE
來自 POINTER_BUTTON_CHANGE_TYPE 列舉的值,指定這個輸入與先前輸入之間的按鈕狀態變更。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 [僅限傳統型應用程式] |
標頭 | winuser.h (包括 Windows.h) |