TOUCHINPUT 構造体 (winuser.h)
タッチ入力用のデータをカプセル化します。
構文
typedef struct tagTOUCHINPUT {
LONG x;
LONG y;
HANDLE hSource;
DWORD dwID;
DWORD dwFlags;
DWORD dwMask;
DWORD dwTime;
ULONG_PTR dwExtraInfo;
DWORD cxContact;
DWORD cyContact;
} TOUCHINPUT, *PTOUCHINPUT;
メンバー
x
タッチ入力の x 座標 (水平点)。 このメンバーは、物理画面座標のピクセルの 100 分の 1 で示されます。
y
タッチ入力の y 座標 (垂直点)。 このメンバーは、物理画面座標のピクセルの 100 分の 1 で示されます。
hSource
ソース入力デバイスのデバイス ハンドル。 各デバイスには、実行時にタッチ入力プロバイダーによって一意のプロバイダーが与えられます。 以下 の「例 」セクションを参照してください。
dwID
特定のタッチ入力を区別するタッチ ポイント識別子。 この値は、接触が戻るまで、接触が停止した時点からのタッチ接触シーケンスで一貫性を保ちます。 ID は、後で後続の連絡先に再利用できます。
dwFlags
タッチ ポイントの押下、離し、モーションのさまざまな側面を指定するビット フラグのセット。 このメンバーのビットは、「解説」セクションの値の任意の妥当な組み合わせにすることができます。
dwMask
構造体内のどのオプション フィールドに有効な値が含まれているかを指定するビット フラグのセット。 オプション フィールドで有効な情報を使用できるかどうかは、デバイス固有です。 アプリケーションでは、対応するビットが dwMask で設定されている場合にのみ、省略可能なフィールド値を使用する必要があります。 このフィールドには、「解説」セクションで説明されている dwMask フラグの組み合わせが含まれている場合があります。
dwTime
イベントのタイム スタンプ (ミリ秒単位)。 使用するアプリケーションは、システムがこのフィールドに対して検証を実行していないことに注意する必要があります。 TOUCHINPUTMASKF_TIMEFROMSYSTEM フラグが設定されていない場合、このフィールドの値の精度とシーケンスは、タッチ入力プロバイダーに完全に依存します。
dwExtraInfo
タッチ イベントに関連付けられている追加の値。
cxContact
タッチ接触領域の幅 (物理画面座標のピクセルの 100 分の 1)。 この値は、 dwMask メンバーに TOUCHEVENTFMASK_CONTACTAREA フラグが設定されている場合にのみ有効です。
cyContact
タッチ接触領域の高さ (物理画面座標のピクセルの 100 分の 1)。 この値は、 dwMask メンバーに TOUCHEVENTFMASK_CONTACTAREA フラグが設定されている場合にのみ有効です。
注釈
次の表に、 dwFlags メンバーのフラグを示します。
フラグ | 値 | 説明 |
---|---|---|
TOUCHEVENTF_MOVE | 0x0001 | 移動が発生しました。 TOUCHEVENTF_DOWNと組み合わせることはできません。 |
TOUCHEVENTF_DOWN | 0x0002 | 対応するタッチ ポイントは、新しい接触を介して確立されました。 TOUCHEVENTF_MOVEまたはTOUCHEVENTF_UPと組み合わせることはできません。 |
TOUCHEVENTF_UP | 0x0004 | タッチ ポイントが削除されました。 |
TOUCHEVENTF_INRANGE | 0x0008 | タッチ ポイントが範囲内にある。 このフラグは、互換性のあるハードウェアでタッチ ホバーのサポートを有効にするために使用されます。 ホバーのサポートを必要としないアプリケーションでは、このフラグを無視できます。 |
TOUCHEVENTF_PRIMARY | 0x0010 | この TOUCHINPUT 構造体が 1 次接触点に対応することを示します。 プライマリ タッチ ポイントの詳細については、次のテキストを参照してください。 |
TOUCHEVENTF_NOCOALESCE | 0x0020 | GetTouchInputInfo を使用して受信した場合、この入力は結合されませんでした。 |
TOUCHEVENTF_PEN | 0x0040 | タッチ イベントはスタイラス デバイスによってトリガーされました。 |
TOUCHEVENTF_PALM | 0x0080 | タッチ イベントは、ユーザーの手のひらによってトリガーされました。 |
フラグ | 値 | 説明 |
---|---|---|
TOUCHINPUTMASKF_CONTACTAREA | 0x0004 | cxContact と cyContact は有効です。 プライマリ タッチ ポイントの詳細については、次のテキストを参照してください。 |
TOUCHINPUTMASKF_EXTRAINFO | 0x0002 | dwExtraInfo は有効です。 |
TOUCHINPUTMASKF_TIMEFROMSYSTEM | 0x0001 | システム時刻は TOUCHINPUT 構造体で設定されました。 |
タッチ ポイントは、タッチ ポイントのない以前の状態から確立される最初のタッチ ポイントである場合にプライマリとして指定されます。 TOUCHEVENTF_PRIMARY フラグは、プライマリ タッチ ポイントが解放されるまで、プライマリ タッチ ポイントの後続のすべてのイベントに対して引き続き設定されます。 プライマリ タッチ ポイントの TOUCHEVENTF_UP イベントは、必ずしも Windows タッチ操作の終了を指定するわけではないことに注意してください。現在の Windows Touch 操作は、プライマリ タッチ ポイントの確立から最後のタッチ ポイントが解放されるまで続行されます。
なお、一連の同時タッチ ポイントでは、1 番目に検出される 1 番目のタッチ ポイントがプライマリに指定されます。 システム マウスの位置はプライマリ タッチ ポイントに従い、タッチ メッセージに加えて、プライマリ タッチ ポイントでのアクションに応答して、 WM_LBUTTONDOWN、 WM_MOUSEMOVE、 およびWM_LBUTTONUP メッセージも生成されます。 プライマリ タッチ ポイントでは、長押しジェスチャを使用して WM_RBUTTONDOWN メッセージと WM_RBUTTONUP メッセージを生成することもできます。
タッチ ポイント識別子は動的であり、タッチ ポイントが保持されている限り、特定のタッチ ポイントに関連付けられることに注意してください。 接触が切断され、再開された場合 (たとえば、指が表面から取り除かれ、もう一度押された場合)、同じタッチ ポイント (同じ指、ペン、またはその他のデバイス) が別のタッチ ポイント識別子を受け取る可能性があります。
TOUCHINPUT 構造体への定数ポインターを表すために、次の型が定義されています。
typedef TOUCHINPUT const * PCTOUCHINPUT;
例
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
if (GetTouchInputInfo((HTOUCHINPUT)lParam,
cInputs,
pInputs,
sizeof(TOUCHINPUT)))
{
// process pInputs
if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
{
// error handling
}
}
else
{
// GetLastError() and error handling
}
delete [] pInputs;
}
else
{
// error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);
次の例は、 hSource メンバーからデバイス情報を取得する方法を示しています。 この例では 、GetRawInputDevice を使用してデバイスに関する情報を取得します。
for (UINT i = 0; i < cInputs; i++){
TOUCHINPUT ti = pInputs[i];
RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
info.cbSize = sizeof(RID_DEVICE_INFO);
UINT size = 0;
if (GetRawInputDeviceInfo(ti.hSource, RIDI_DEVICEINFO, &info, &size)){
}else{
DWORD err = GetLastError();
}
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header | winuser.h (Windows.h を含む) |