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

# XGameStreamingShowTouchControlsWithStateUpdateOnClient

> XGameStreamingShowTouchControlsWithStateUpdateOnClient

# XGameStreamingShowTouchControlsWithStateUpdateOnClient

Solicita que un dispositivo cliente de streaming especificado actualice su estado de controles táctiles y, a continuación, muestre un diseño táctil especificado. Todas las actualizaciones de estado se producen antes de que se muestre el nuevo diseño táctil.

## Sintaxis

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

### Parámetros

*client*   \_In\_\
Tipo: XGameStreamingClientId

El dispositivo cliente de streaming en el que se actualizará el estado y se mostrarán los controles táctiles.

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

Nombre del diseño de controles táctiles que se va a mostrar, o `nullptr` para mostrar el diseño estándar.

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

Tamaño de la matriz de operaciones que se pasa.

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

Matriz de todas las actualizaciones de variables de estado que se solicitan.

### Valor devuelto

Tipo: HRESULT

Devuelve **S\_OK** si se realiza correctamente; de lo contrario, devuelve un código de error.

#### Posibles errores

| Código de error                          | Valor de error | Motivo del error                                                                                                                                                                                                                                 |
| ---------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| E\_GAMESTREAMING\_NOT\_INITIALIZED       | 0x89245400     | No se ha inicializado el entorno de ejecución de XGameStreaming. Llame a XGameStreamingInitialize antes de llamar a otras API.                                                                                                                   |
| E\_GAMESTREAMING\_CLIENT\_NOT\_CONNECTED | 0x89245401     | El cliente especificado no está conectado.                                                                                                                                                                                                       |
| E\_INVALIDARG                            | 0x80070057     | Una operación especificada no tiene datos que coincidan con el tipo de datos especificado en el [XGameStreamingTouchControlsStateValueKind](/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstatevaluekind) de las operaciones |

## Comentarios

Esta API se debe usar cuando el juego quiera mostrar un diseño táctil determinado que también requiera algunas actualizaciones de estado que puedan afectar a su representación. Use esta API si desea tanto actualizar el estado de las variables a las que se hace referencia en un nuevo diseño táctil COMO cambiar a ese diseño táctil en un dispositivo cliente de streaming especificado. Esta API garantiza que todas las actualizaciones de estado se realicen antes de que se muestre el nuevo diseño.

Si desea afectar a todos los dispositivos cliente de streaming, use [XGameStreamingShowTouchControlsWithStateUpdate](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate).

Si el juego solo necesita cambiar el diseño, debe usar [XGameStreamingShowTouchControlLayoutOnClient](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrollayoutonclient) en su lugar.

Si las actualizaciones de estado pueden afectar al diseño actual o a otros diseños, y las actualizaciones deben producirse independientemente de un cambio de diseño táctil específico, el juego debe usar [XGameStreamingUpdateTouchControlsStateOnClient](/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient) en su lugar.

## Ejemplos

```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 and the client to be updated


void GameStreamingClientManager::UpdateBuildingStateAndControls(const BuildingProperties& building, XGameStreamingClientId clientId)
{
    
    

    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
    XGameStreamingShowTouchControlsWithStateUpdateOnClient(clientId, "building", updateOperations.size(), updateOperations.data());
}

```

## Requisitos

**Encabezado:** XGameStreaming.h

**Biblioteca:** xgameruntime.lib
**Plataformas compatibles**: Windows, consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[XGameStreaming](/reference/system/xgamestreaming/xgamestreaming_members#TouchAdaptation)\
[XGameStreamingTouchControlsStateOperationKind](/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstateoperationkind)\
[XGameStreamingTouchControlsStateOperation](/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation)\
[XGameStreamingTouchControlsStateValue](/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstatevalue)\
[XGameStreamingShowTouchControlsWithStateUpdate](/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate)\
[XGameStreamingUpdateTouchControlsState](/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate)\
[XGameStreamingUpdateTouchControlsStateOnClient](/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient)


## Related topics

- [XGameStreamingShowTouchControlsWithStateUpdate](/es/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate.md)
- [XGameStreamingUpdateTouchControlsState](/es/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate.md)
- [XGameStreamingTouchControlsStateOperation](/es/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstateoperation.md)
- [XGameStreamingTouchControlsStateValue](/es/reference/system/xgamestreaming/structs/xgamestreamingtouchcontrolsstatevalue.md)
- [XGameStreamingTouchControlsStateOperationKind](/es/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstateoperationkind.md)
