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

Solicita que todos os dispositivos cliente de streaming conectados atualizem o estado dos controles por toque e mostrem um layout de toque especificado.  Todas as atualizações de estado acontecem antes que o novo layout de toque seja exibido.

## Sintaxe

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

### Parâmetros

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

Nome do layout de controles por toque a ser exibido ou `nullptr` para exibir o layout padrão.

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

Tamanho da matriz de operações que está sendo passada

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

Matriz de todas as atualizações de variáveis de estado que estão sendo solicitadas

### Valor retornado

Tipo: HRESULT

Retornará **S\_OK** se for bem-sucedido; caso contrário, retornará um código de erro.

#### Erros potenciais

| Código de erro | Valor do erro | Motivo do erro |
| - | - | - |
| E\_GAMESTREAMING\_NOT\_INITIALIZED | 0x89245400 | O runtime do XGameStreaming não foi inicializado. Chame [XGameStreamingInitialize](/pt-BR/reference/system/xgamestreaming/functions/xgamestreaminginitialize) antes de chamar outras APIs. |
| E\_INVALIDARG | 0x80070057 | Uma operação especificada não tem dados que correspondam ao tipo de dados especificado no [XGameStreamingTouchControlsStateValueKind](/pt-BR/reference/system/xgamestreaming/enums/xgamestreamingtouchcontrolsstatevaluekind) da operação |

## Comentários

Esta API deve ser usada quando o jogo precisar mostrar um layout de toque específico que também exija algumas atualizações de estado que possam afetar sua renderização. Use esta API se quiser tanto atualizar o estado das variáveis referenciadas em um novo layout de toque QUANTO alternar para esse layout de toque em todos os dispositivos cliente de streaming conectados. Esta API garante que todas as atualizações de estado sejam feitas antes que o novo layout seja exibido.

Se quiser afetar apenas um cliente específico, use [XGameStreamingShowTouchControlsWithStateUpdateOnClient](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdateonclient).

Se o jogo quiser apenas alterar o layout, ele deverá usar [XGameStreamingShowTouchControlLayout](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrollayout).

Se as atualizações de estado puderem afetar o layout atual ou outros layouts e as atualizações precisarem acontecer independentemente de uma alteração específica de layout de toque, o jogo deverá usar [XGameStreamingUpdateTouchControlsState](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate).

## Exemplos

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

```

## Requisitos

**Cabeçalho:** XGameStreaming.h

**Biblioteca:** xgameruntime.lib\
**Plataformas com suporte**: Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

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


## Related topics

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