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

# XGameStreamingShowTouchControlsWithStateUpdate

> XGameStreamingShowTouchControlsWithStateUpdate

# XGameStreamingShowTouchControlsWithStateUpdate

Demande à tous les appareils clients de diffusion en continu connectés de mettre à jour l'état de leurs commandes tactiles et d'afficher une disposition tactile spécifiée. Toutes les mises à jour d'état ont lieu avant l'affichage de la nouvelle disposition tactile.

## Syntaxe

```cpp theme={null}
HRESULT XGameStreamingShowTouchControlsWithStateUpdate(  
         const char* layout,  
         size_t operationCount,  
         const XGameStreamingTouchControlsStateOperation* operations  
)  
```

### Paramètres

*layout*   \_In\_opt\_z\_\
Type : char\*

Nom de la disposition des commandes tactiles à afficher, ou `nullptr` pour afficher la disposition standard.

*operationCount*   \_In\_\
Type : size\_t

Taille du tableau d'opérations transmis

*operations*   \_In\_reads\_opt\_(operationCount)\
Type : [XGameStreamingTouchControlsStateOperation\*](/fr-CA/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation)

Tableau de toutes les mises à jour de variables d'état demandées

### Valeur de retour

Type : HRESULT

Retourne **S\_OK** en cas de réussite; sinon, retourne un code d'erreur.

#### Erreurs potentielles

| Code d'erreur | Valeur d'erreur | Cause de l'erreur |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | Le runtime XGameStreaming n'a pas été initialisé. Appelez [XGameStreamingInitialize](/fr-CA/reference/system/xgamestreaming/functions/xgamestreaminginitialize) avant d'appeler d'autres API. |
| E\_INVALIDARG | 0x80070057 | Une opération spécifiée ne contient pas de données correspondant au type de données indiqué dans le [XGameStreamingTouchControlsStateValueKind](/fr-CA/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstatevaluekind) des opérations |

## Remarques

Cette API doit être utilisée lorsque le jeu doit afficher une disposition tactile particulière qui nécessite également des mises à jour d'état pouvant influer sur son rendu. Utilisez cette API si vous souhaitez à la fois mettre à jour l'état des variables référencées dans une nouvelle disposition tactile ET passer à cette disposition tactile sur tous les appareils clients de diffusion en continu connectés. Cette API garantit que toutes les mises à jour d'état sont effectuées avant l'affichage de la nouvelle disposition.

Si vous souhaitez agir uniquement sur un client précis, utilisez [XGameStreamingShowTouchControlsWithStateUpdateOnClient](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient).

Si le jeu souhaite uniquement changer la disposition, il doit plutôt utiliser [XGameStreamingShowTouchControlLayout](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrollayout).

Si les mises à jour d'état peuvent influer sur la disposition actuelle ou sur d'autres dispositions, et que les mises à jour doivent avoir lieu indépendamment d'un changement de disposition tactile précis, le jeu doit plutôt utiliser [XGameStreamingUpdateTouchControlsState](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate).

## Exemples

```c++ theme={null}
// In this example, the player has just selected a specific building in an strategy game 
// and the game wants to populate the two building specific action slots with the appropriate imagery
// before selecting the layouts
//
// Assumes passing in game structure that refers to the selected building and a game function to get the image
// assets for a particular building capability.


void GameStreamingClientManager::UpdateBuildingStateAndControls(const BuildingProperties& building)
{
    
    

    std::vector<XGameStreamingTouchControlsStateOperation> updateOperations;
    
    // update the image for the first two building slots   
    XGameStreamingTouchControlsStateOperation buildingCapability1Image;
    buildingCapability1Image.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability1Image.path = "/buildingCapability1Image";
    buildingCapability1Image.valueKind = XGameStreamingTouchControlsStateValueKind::String;
    buildingCapability1Image.stringValue =  GetImageName(building.capability[0].id);        
    updateOperations.push_back(buildingCapability1Image);

    XGameStreamingTouchControlsStateOperation buildingCapability2Image;
    buildingCapability2Image.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability2Image.path = "/buildingCapability2Image";
    buildingCapability2Image.valueKind = XGameStreamingTouchControlsStateValueKind::String;
    buildingCapability2Image.stringValue =  GetImageName(building.capability[1].id);        
    updateOperations.push_back(buildingCapability2Image);
    
    // enable the second slot if the building is of level 3 or above, otherwise the third slot will be disabled
    XGameStreamingTouchControlsStateOperation buildingCapability2Enabled;
    buildingCapability2Enabled.operationKind = XGameStreamingTouchControlsStateOperationKind::Replace;
    buildingCapability2Enabled.path = "/buildingCapability2IsEnabled";
    buildingCapability2Enabled.valueKind = XGameStreamingTouchControlsStateValueKind::Boolean;
    buildingCapability2Enabled.booleanValue =  building.level >= 3;
    updateOperations.push_back(buildingCapability2Enabled);
  
    // Switch to the building layout with the state update being sent as well
    XGameStreamingShowTouchControlsWithStateUpdate("building", updateOperations.size(), updateOperations.data());
}

```

## Configuration requise

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

**Bibliothèque :** xgameruntime.lib\
**Plateformes prises en charge** : Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[XGameStreaming](/fr-CA/reference/system/xgamestreaming/xgamestreaming_members#TouchAdaptation)\
[XGameStreamingTouchControlsStateOperationKind](/fr-CA/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstateoperationkind)\
[XGameStreamingTouchControlsStateOperation](/fr-CA/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation)\
[XGameStreamingTouchControlsStateValue](/fr-CA/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstatevalue)\
[XGameStreamingShowTouchControlsWithStateUpdateOnClient](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient)\
[XGameStreamingUpdateTouchControlsState](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate)\
[XGameStreamingUpdateTouchControlsStateOnClient](/fr-CA/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient)


## Related topics

- [XGameStreamingShowTouchControlsWithStateUpdate](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate.md)
- [XGameStreamingShowTouchControlsWithStateUpdateOnClient](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient.md)
