> ## 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 streaming 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/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/reference/system/xgamestreaming/functions/xgamestreaminginitialize) avant d'appeler d'autres API. |
| E\_INVALIDARG | 0x80070057 | Une opération spécifiée ne comporte pas de données correspondant au type de données spécifié dans le [XGameStreamingTouchControlsStateValueKind](/fr/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 susceptibles d'affecter 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 basculer vers cette disposition tactile sur tous les appareils clients de streaming 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 n'affecter qu'un client spécifique, utilisez [XGameStreamingShowTouchControlsWithStateUpdateOnClient](/fr/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient).

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

Si les mises à jour d'état peuvent affecter la disposition actuelle ou d'autres dispositions et doivent avoir lieu indépendamment d'un changement de disposition tactile spécifique, le jeu doit plutôt utiliser [XGameStreamingUpdateTouchControlsState](/fr/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/reference/system/xgamestreaming/xgamestreaming_members#TouchAdaptation)\
[XGameStreamingTouchControlsStateOperationKind](/fr/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstateoperationkind)\
[XGameStreamingTouchControlsStateOperation](/fr/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation)\
[XGameStreamingTouchControlsStateValue](/fr/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstatevalue)\
[XGameStreamingShowTouchControlsWithStateUpdateOnClient](/fr/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient)\
[XGameStreamingUpdateTouchControlsState](/fr/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate)\
[XGameStreamingUpdateTouchControlsStateOnClient](/fr/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient)


## Related topics

- [XGameStreamingShowTouchControlsWithStateUpdate](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate.md)
- [XGameStreamingShowTouchControlsWithStateUpdateOnClient](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient.md)
- [XGameStreamingUpdateTouchControlsState](/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate.md)
- [XGameStreamingTouchControlsStateOperation](/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation.md)
- [XGameStreamingTouchControlsStateValue](/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstatevalue.md)
