TOUCHINPUT 構造体

タッチ入力用のデータをカプセル化します。

構文


typedef struct _TOUCHINPUT {
  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 座標 (水平方向の点)。このメンバーは、物理画面座標の 1/100 ピクセル単位で示されます。

y

タッチ入力の Y 座標 (垂直方向の点)。このメンバーは、物理画面座標の 1/100 ピクセル単位で示されます。

hSource

ソース入力デバイスのデバイス ハンドル。各デバイスには、実行時にタッチ入力プロバイダーによって一意のプロバイダーが割り当てられます。

dwID

特定のタッチ入力を識別する接触点識別子。この値は、接触が開始してから終了するまで接触シーケンス内で一貫しています。ID は、後続の接触で再利用される場合があります。

dwFlags

接触点を押したり放したり動かしたりするさまざまな操作を指定するビット フラグのセット。このメンバーのビットには、「解説」で示す値を適切に組み合わせて指定できます。

dwMask

有効な値を含む構造体のオプション フィールドを指定するビット フラグのセット。オプション フィールドの有効な情報を利用できるかどうかは、デバイスに固有です。アプリケーションでは、対応するビットが dwMask で設定されている場合にのみ、オプション フィールドの値を使用する必要があります。このフィールドには、「解説」で示す dwMask フラグを組み合わせて指定できます。

dwTime

イベントのタイム スタンプ (ミリ秒単位)。利用側のアプリケーションでは、システムによってこのフィールドの検証が実行されないことに注意する必要があります。TOUCHINPUTMASKF_TIMEFROMSYSTEM フラグが設定されていない場合、このフィールドの値の精度と順序は、タッチ入力プロバイダーに完全に依存します。

dwExtraInfo

タッチ イベントに関連付けられている追加の値。

cxContact

接触領域の幅 (物理画面座標の 1/100 ピクセル単位)。この値は、dwMask メンバーに TOUCHEVENTFMASK_CONTACTAREA フラグが設定されている場合のみ有効です。

cyContact

接触領域の高さ (物理画面座標の 1/100 ピクセル単位)。この値は、dwMask メンバーに TOUCHEVENTFMASK_CONTACTAREA フラグが設定されている場合のみ有効です。

解説

次の表に、dwFlags メンバーのフラグを示します。

フラグ説明
TOUCHEVENTF_MOVE0x0001移動が発生しました。TOUCHEVENTF_DOWN と組み合わせることはできません。
TOUCHEVENTF_DOWN0x0002対応する接触点が新しい接触によって確立されました。TOUCHEVENTF_MOVE または TOUCHEVENTF_UP と組み合わせることはできません。
TOUCHEVENTF_UP0x0004接触点が削除されました。
TOUCHEVENTF_INRANGE0x0008接触点が範囲内にあります。このフラグは、互換性のあるハードウェアでタッチ ホバーをサポートするために使用されます。ホバーのサポートが不要なアプリケーションでは、このフラグは無視できます。
TOUCHEVENTF_PRIMARY0x0010この TOUCHINPUT 構造体が第 1 接触点に対応することを示します。第 1 接触点の詳細については、下記のテキストを参照してください。
TOUCHEVENTF_NOCOALESCE0x0020この入力は、GetTouchInputInfo を使用して受け取られるときに一体化されませんでした。
TOUCHEVENTF_PALM0x0080このタッチ イベントは、ユーザーの手のひらによるものです。

 

   コンピューター上のターゲット ハードウェアでホバーがサポートされていない場合は、TOUCHEVENTF_UP フラグが設定されると、TOUCHEVENTF_INRANGE フラグがオフになります。コンピューター上のターゲット ハードウェアでホバーがサポートされている場合は、TOUCHEVENTF_UP フラグと TOUCHEVENTF_INRANGE フラグが個別に設定されます。

次の表に、dwMask メンバーのフラグを示します。

フラグ説明
TOUCHINPUTMASKF_CONTACTAREA0x0004cxContactcyContact が有効です。第 1 接触点の詳細については、下記のテキストを参照してください。
TOUCHINPUTMASKF_EXTRAINFO0x0002dwExtraInfo が有効です。
TOUCHINPUTMASKF_TIMEFROMSYSTEM0x0001システム時刻が TOUCHINPUT 構造体で設定されました。

 

接触点は、この点が接触点のない以前の状態から確立される最初の接触点である場合に第 1 接触点として指定されます。TOUCHEVENTF_PRIMARY フラグは、第 1 接触点が解放されるまで、第 1 接触点の後続のすべてのイベントに対して継続して設定されます。第 1 接触点に対する TOUCHEVENTF_UP イベントは、Windows タッチ操作の終了を示すとは限りません。現在の Windows タッチ操作は、第 1 接触点が確立されてから最後の接触点が解放されるまで続行されます。

唯一の接触点、または一連の同時接触点において最初に検出された接触点は、第 1 接触点として指定されます。システムのマウスの位置は第 1 接触点に従い、第 1 接触点に対するアクションに応じて、タッチ メッセージに加えて WM_LBUTTONDOWN、WM_MOUSEMOVE、および WM_LBUTTONUP の各メッセージも生成します。第 1 接触点では、プレス アンド ホールド ジェスチャによって、WM_RBUTTONDOWN メッセージと WM_RBUTTONUP メッセージを生成することもできます。

接触点識別子は動的である場合があり、特定の接触点が維持されている間だけその接触点に関連付けられます。接触が断たれてから再開される場合 (たとえば、指が画面から離れてから再度画面を押す場合など)、同じ接触点 (同じ指、ペン、またはその他のデバイス) でも異なる接触点識別子を受け取る場合があります。

TOUCHINPUT 構造体への定数ポインターを表すために、次の型が定義されます。


   typedef TOUCHINPUT const * PCTOUCHINPUT;
	

  次の例では、pInputs 配列は並べ替えられません。dwID の値を使用して、特定の接触点を追跡します。

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
    }
}
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

ヘッダー

Winuser.h (includeWindows.h)

参照

GetTouchInputInfo
構造体

 

 

表示: