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
ソース デバイスが 1 つの入力フレームで更新を報告した複数のポインターに共通する識別子。 たとえば、並列モードのマルチタッチ デジタイザーは、1 回の更新で複数のタッチ接点の位置をシステムに報告する場合があります。
フレーム識別子は、すべてのデバイスのすべてのポインターの入力がシステムに報告されるときに割り当てられることに注意してください。 したがって、このフィールドには、ウィンドウが受信する 1 つの一連のメッセージに厳密に連続する値が含まれていない場合があります。 ただし、このフィールドには、1 つのデバイスによって同じ入力フレームで報告されたすべての入力更新に対して同じ数値が含まれます。
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 を指定すると、タイム スタンプは、実際の挿入時に 0.1 ミリ秒の解像度で現在の時刻に変換されます。 カスタム PerformanceCount が 前回の挿入と同じ .1 ミリ秒のウィンドウになった場合、 ERROR_NOT_READY が返され、挿入は行われません。 挿入はエラーによってすぐに無効になることはありませんが、次に成功した挿入には、以前に成功した挿入から少なくとも 0.1 ミリ秒の PerformanceCount 値が必要です。 これは、dwTime を使用する場合にも当てはまります。
InjectTouchInput で dwTime と PerformanceCount の両方が指定されている場合は、ERROR_INVALID_PARAMETERが返されます。
インジェクションが開始されると、InjectTouchInput で dwTime と PerformanceCount を切り替えることはできません。
dwTime と PerformanceCount の両方が指定されていない場合、InjectTouchInput は呼び出しのタイミングに基づいてタイムスタンプを割り当てます。 InjectTouchInput 呼び出しが 0.1 ミリ秒未満の間隔で繰り返し発生する場合は、ERROR_NOT_READYが返される可能性があります。 このエラーは入力をすぐに無効にしませんが、インジェクション アプリケーションは、挿入を成功させるために同じフレームをもう一度再試行する必要があります。
historyCount
型: UINT32
このメッセージに結合された入力の数。 この数は、 GetPointerInfoHistory の呼び出しによって返されるエントリの合計数と一致します。 結合が発生しなかった場合、メッセージで表される 1 つの入力に対してこのカウントは 1 になります。
InputData
dwKeyStates
型: DWORD
入力の生成時に押されたキーボード修飾子キーを示します。 0 または 修飾子キーの状態から次の値の組み合わせを使用できます。
POINTER_MOD_SHIFT – Shift キーが押されました。
POINTER_MOD_CTRL – Ctrl キーが押されました。
PerformanceCount
種類: UINT64
ポインター メッセージを受信したときの高解像度パフォーマンス カウンターの値 ( dwTime に代わる高精度、64 ビット)。 この値は、タッチ デジタイザー ハードウェアが入力レポートのスキャン タイムスタンプ情報をサポートしている場合に調整できます。
ButtonChangeType
種類: POINTER_BUTTON_CHANGE_TYPE
この入力と前の入力の間のボタンの状態の変化を指定する、 POINTER_BUTTON_CHANGE_TYPE 列挙からの値。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリのみ] |
Header | winuser.h (Windows.h を含む) |