Share via


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 タッチ イベントは、ユーザーの手のひらによってトリガーされました。
 
メモ マシン上のターゲット ハードウェアがホバーをサポートしていない場合、 TOUCHEVENTF_UP フラグが設定されると、 TOUCHEVENTF_INRANGE フラグがクリアされます。 マシン上のターゲット ハードウェアがホバーをサポートしている場合、 TOUCHEVENTF_UP フラグと TOUCHEVENTF_INRANGE フラグは個別に設定されます。
 
次の表に、 dwMask メンバーのフラグを示します。
フラグ 説明
TOUCHINPUTMASKF_CONTACTAREA 0x0004 cxContactcyContact は有効です。 プライマリ タッチ ポイントの詳細については、次のテキストを参照してください。
TOUCHINPUTMASKF_EXTRAINFO 0x0002 dwExtraInfo は有効です。
TOUCHINPUTMASKF_TIMEFROMSYSTEM 0x0001 システム時刻は TOUCHINPUT 構造体で設定されました。
 

タッチ ポイントは、タッチ ポイントのない以前の状態から確立される最初のタッチ ポイントである場合にプライマリとして指定されます。 TOUCHEVENTF_PRIMARY フラグは、プライマリ タッチ ポイントが解放されるまで、プライマリ タッチ ポイントの後続のすべてのイベントに対して引き続き設定されます。 プライマリ タッチ ポイントの TOUCHEVENTF_UP イベントは、必ずしも Windows タッチ操作の終了を指定するわけではないことに注意してください。現在の Windows Touch 操作は、プライマリ タッチ ポイントの確立から最後のタッチ ポイントが解放されるまで続行されます。

なお、一連の同時タッチ ポイントでは、1 番目に検出される 1 番目のタッチ ポイントがプライマリに指定されます。 システム マウスの位置はプライマリ タッチ ポイントに従い、タッチ メッセージに加えて、プライマリ タッチ ポイントでのアクションに応答して、 WM_LBUTTONDOWNWM_MOUSEMOVEおよびWM_LBUTTONUP メッセージも生成されます。 プライマリ タッチ ポイントでは、長押しジェスチャを使用して 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
    }
    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 を含む)

こちらもご覧ください

GetTouchInputInfo

構造体