> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IGameInputReading::GetTouchSurfaceState

> タッチ サーフェス上の接触点を入力読み取りから取得します。

タッチ サーフェス上の接触点を入力読み取りから取得します。

## 構文

```cpp theme={null}
uint32_t GetTouchSurfaceState(
    uint32_t surfaceIndex,
    uint32_t contactArrayCount,
    GameInputTouchContact* contactArray
);
```

### パラメーター

*surfaceIndex*   \_In\_\
型: uint32\_t

タッチ サーフェスのインデックス。[IGameInputDevice::GetTouchSurfaceCount](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfacecount.md) から返される値より小さくなければなりません。

*contactArrayCount*   \_In\_\
型: uint32\_t

*contactArray* の要素数。

*contactArray*   \_Out\_writes\_to\_opt\_(contactArrayCount, return)\
型: [GameInputTouchContact](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchcontact)\*

タッチ サーフェス上の接触点を受け取る配列。null を指定できます。

### 戻り値

型: uint32\_t

*contactArray* が null の場合は、タッチ サーフェス上の接触点の数を返します。それ以外の場合は、*contactArray* に書き込まれた接触点の数を返します。これは、接触点の数と *contactArrayCount* のうち小さい方の値です。読み取りにタッチ データが含まれていない場合、または *surfaceIndex* が有効なサーフェス インデックスではない場合は 0 を返します。

## 解説

*contactArray* の各要素は、サーフェス上の指などの 1 つの接触点を記述します。接触点が書き込まれなかった *contactArray* の要素は 0 に設定されます。[GameInputTouchContact](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchcontact) の `contactId` メンバーは、接触点がサーフェス上に残っている限り同じ値のままであるため、読み取り間で接触点を追跡するために使用できます。

*contactArray* のサイズを決定するには、[IGameInputReading::GetTouchContactCount](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md) を呼び出すか、[GameInputTouchSurfaceInfo](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchsurfaceinfo) の `maxContactCount` メンバーを使用して、どの読み取りにも十分な大きさの配列を割り当てます。接触点の座標を解釈するには、同じサーフェス インデックスを指定して [IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfaceinfo.md) を呼び出します。

タッチ データを含む読み取りでは、[IGameInputReading::GetInputKind](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind.md) に `GameInputKindTouch` が含まれます。

> [!NOTE]
>
> タッチのサポートは、デバイスとプラットフォームによって異なります。

次の例では、デバイスのすべてのタッチ サーフェス上の接触点を読み取ります。

```cpp theme={null}
void ReadTouchContacts(
    _In_ IGameInputDevice* device,
    _In_ IGameInputReading* reading) noexcept
{
    const uint32_t surfaceCount = device->GetTouchSurfaceCount();
    for (uint32_t surfaceIndex = 0; surfaceIndex < surfaceCount; ++surfaceIndex)
    {
        GameInputTouchSurfaceInfo surfaceInfo = {};
        if (FAILED(device->GetTouchSurfaceInfo(surfaceIndex, &surfaceInfo)))
        {
            continue;
        }

        std::vector<GameInputTouchContact> contacts(surfaceInfo.maxContactCount);
        const uint32_t contactCount = reading->GetTouchSurfaceState(
            surfaceIndex,
            static_cast<uint32_t>(contacts.size()),
            contacts.data());

        for (uint32_t i = 0; i < contactCount; ++i)
        {
            const GameInputTouchContact& contact = contacts[i];

            // Normalize the position to the range [0, 1].
            const float x = static_cast<float>(contact.padX) / static_cast<float>(surfaceInfo.padWidth);
            const float y = static_cast<float>(contact.padY) / static_cast<float>(surfaceInfo.padHeight);

            // Application-specific code to handle contact.contactId at (x, y)
        }
    }
}
```

## 要件

**ヘッダー:** GameInput.h

**ライブラリ:** gameinput.lib

**サポートされているプラットフォーム:** Windows、XBOX One ファミリー本体、XBOX Series 本体

## 関連項目

[GameInput の概要](https://docs.xbox.com/ja-jp/build/core-features/common/input/overviews/input-overview.md)\
[IGameInputReading](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/igameinputreading.md)\
[IGameInputReading::GetTouchContactCount](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md)\
[IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfaceinfo.md)\
[GameInputTouchContact](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchcontact)\
[GameInputTouchSurfaceInfo](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchsurfaceinfo)

## バージョン履歴

| バージョン | 変更内容 |
| - | - |
| **v4** | 導入されました。 |


## Related topics

- [IGameInputReading::GetTouchContactCount](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md)
- [IGameInputDevice::GetTouchSurfaceCount](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfacecount.md)
- [IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/ja-jp/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfaceinfo.md)
- [GameInputKind](https://docs.xbox.com/ja-jp/reference/input/gameinput/enums/gameinputkind.md)
- [IGameInputReading::GetTouchState (非推奨)](https://docs.xbox.com/ja-jp/reference/input/gameinput/deprecated/interfaces/igameinputreading/methods/igameinputreading_gettouchstate.md)
