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

> Récupère les contacts sur une surface tactile à partir d'une lecture d'entrée.

Récupère les contacts sur une surface tactile à partir d'une lecture d'entrée.

## Syntaxe

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

### Paramètres

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

Index de la surface tactile. Doit être inférieur à la valeur retournée par [IGameInputDevice::GetTouchSurfaceCount](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfacecount.md).

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

Nombre d'éléments de *contactArray*.

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

Tableau qui reçoit les contacts sur la surface tactile. Peut être null.

### Valeur de retour

Type : uint32\_t

Si *contactArray* est null, retourne le nombre de contacts sur la surface tactile. Sinon, retourne le nombre de contacts écrits dans *contactArray*, soit la plus petite valeur entre le nombre de contacts et *contactArrayCount*. Retourne 0 si la lecture ne contient pas de données tactiles ou si *surfaceIndex* n'est pas un index de surface valide.

## Remarques

Chaque élément de *contactArray* décrit un contact sur la surface, comme un doigt. Les éléments de *contactArray* dans lesquels aucun contact n'est écrit sont définis sur zéro. Le membre `contactId` de [GameInputTouchContact](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchcontact) reste identique tant que le contact demeure sur la surface ; vous pouvez donc l'utiliser pour suivre un contact d'une lecture à l'autre.

Pour dimensionner *contactArray*, appelez [IGameInputReading::GetTouchContactCount](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md), ou utilisez le membre `maxContactCount` de [GameInputTouchSurfaceInfo](https://learn.microsoft.com/en-us/gaming/gdk/docs/reference/input/gameinput/structs/gameinputtouchsurfaceinfo) pour allouer un tableau suffisamment grand pour n'importe quelle lecture. Pour interpréter les coordonnées des contacts, appelez [IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfaceinfo.md) avec le même index de surface.

Les lectures qui contiennent des données tactiles incluent `GameInputKindTouch` dans [IGameInputReading::GetInputKind](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_getinputkind.md).

> [!NOTE]
>
> La prise en charge tactile dépend du périphérique et de la plateforme.

L'exemple suivant lit les contacts sur chaque surface tactile d'un périphérique.

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

## Configuration requise

**En-tête :** GameInput.h

**Bibliothèque :** gameinput.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[Vue d'ensemble de GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-overview.md)\
[IGameInputReading](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/igameinputreading.md)\
[IGameInputReading::GetTouchContactCount](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md)\
[IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/fr/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)

## Historique des versions

| Version | Modifications |
| - | - |
| **v4** | Introduite. |


## Related topics

- [IGameInputReading::GetTouchContactCount](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputreading/methods/igameinputreading_gettouchcontactcount.md)
- [IGameInputDevice::GetTouchSurfaceCount](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfacecount.md)
- [IGameInputDevice::GetTouchSurfaceInfo](https://docs.xbox.com/fr/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gettouchsurfaceinfo.md)
- [GameInputKind](https://docs.xbox.com/fr/reference/input/gameinput/enums/gameinputkind.md)
- [Gestion des versions de l'API GameInput](https://docs.xbox.com/fr/build/core-features/common/input/overviews/input-versioning.md)
