> ## 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 um dispositivo cliente de streaming especificado atualize o estado dos controles por toque e, em seguida, mostre 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 XGameStreamingShowTouchControlsWithStateUpdateOnClient(  
         XGameStreamingClientId client,  
         const char* layout,  
         size_t operationCount,  
         const XGameStreamingTouchControlsStateOperation* operations  
)  
```

### Parâmetros

*client*   \_In\_\
Tipo: XGameStreamingClientId

O dispositivo cliente de streaming no qual atualizar o estado e mostrar os controles por toque.

*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 antes de chamar outras APIs. |
| E\_GAMESTREAMING\_CLIENT\_NOT\_CONNECTED | 0x89245401 | O cliente especificado não está conectado. |
| 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 quiser 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 um dispositivo cliente de streaming especificado. Esta API garante que todas as atualizações de estado sejam feitas antes que o novo layout seja exibido.

Se quiser afetar todos os dispositivos cliente de streaming, use [XGameStreamingShowTouchControlsWithStateUpdate](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate).

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

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 [XGameStreamingUpdateTouchControlsStateOnClient](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient).

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

**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)\
[XGameStreamingShowTouchControlsWithStateUpdate](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingshowtouchcontrolswithstateupdate)\
[XGameStreamingUpdateTouchControlsState](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstate)\
[XGameStreamingUpdateTouchControlsStateOnClient](/pt-BR/reference/system/xgamestreaming/functions/xgamestreamingupdatetouchcontrolsstateonclient)


## Related topics

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