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

# IGameInput::RegisterSystemButtonCallback

> IGameInput::RegisterSystemButtonCallback

# IGameInput::RegisterSystemButtonCallback

註冊在按下或放開指南或分享按鈕時呼叫的回呼函式。

## 語法

```cpp theme={null}
HRESULT RegisterSystemButtonCallback(
    IGameInputDevice* device,
    GameInputSystemButtons buttonFilter,
    void* context,
    GameInputSystemButtonCallback callbackFunc,
    GameInputCallbackToken* callbackToken
);
```

### 參數

*device*   \_In\_opt\_\
類型：IGameInputDevice\*

可選擇性地將已註冊的回呼限制為針對特定裝置觸發。

*buttonFilter*   \_In\_\
類型：GameInputSystemButtons

要接收回呼的按鈕集合，以邏輯 OR 結合在一起。

*context*   \_In\_opt\_\
類型：void\*

為回呼函式提供相關資訊的物件。通常是呼叫端物件。

*callbackFunc*   \_In\_\
類型：GameInputSystemButtonCallback

在按下或放開系統按鈕時呼叫的遊戲定義回呼函式。

*callbackToken*   \_Out\_opt\_\
類型：GameInputCallbackToken\*

識別已註冊回呼函式的權杖。當您需要取消或取消註冊回呼函式時，會使用此權杖來識別已註冊的函式。

### 傳回值

類型：HRESULT

函式結果。

## 備註

此方法會註冊在按下或放開指南或系統按鈕時呼叫的回呼函式。是否會分派回呼，取決於您的處理序與其他處理序中由 [IGameInput::SetFocusPolicy](/zh-TW/reference/input/gameinput/interfaces/igameinput/methods/igameinput_setfocuspolicy) 設定的 [GameInputFocusPolicy](/zh-TW/reference/input/gameinput/enums/gameinputfocuspolicy)。如需詳細資料，請參閱 [GameInputFocusPolicy](/zh-TW/reference/input/gameinput/enums/gameinputfocuspolicy)。在 XBOX 上，殼層一律會取用指南按鈕，因此這些回呼永遠不會在 XBOX 上分派。

若要停止接收回呼，請參閱 [IGameInput::UnregisterCallback](/zh-TW/reference/input/gameinput/interfaces/igameinput/methods/igameinput_unregistercallback) 和 [IGameInput::StopCallback](/zh-TW/reference/input/gameinput/interfaces/igameinput/methods/igameinput_stopcallback) 方法。

此功能已新增至 Windows SDK 10.0.26031 預覽版的 GameInput.h，並將在未來的 GDK 版本中加入。

下列程式碼範例示範如何接聽指南按鈕的按下動作。

```cpp theme={null}
Microsoft::WRL::ComPtr<IGameInput> gameInput;

void CALLBACK OnGuideButton(
    _In_ GameInputCallbackToken callbackToken,
    _In_ void * context,
    _In_ IGameInputDevice * device,
    _In_ uint64_t timestamp,
    _In_ GameInputSystemButtons currentButtons,
    _In_ GameInputSystemButtons previousButtons)
{
    bool guidePressed = currentButtons & GameInputSystemButtons::GameInputSystemButtonGuide;
    bool guidePreviouslyPressed = previousButtons & GameInputSystemButtons::GameInputSystemButtonGuide;
    if (guidePressed && !guidePreviouslyPressed)
    {
        // Handle new Guide button press
    }
    else if (!guidePressed && guidePreviouslyPressed)
    {
        // Handle new Guide button release
    }
}

void RegisterForGuideButton() noexcept
{
    GameInputCallbackToken token;
    if (SUCCEEDED(gameInput->RegisterSystemButtonCallback(
        nullptr, // All devices
        GameInputSystemButtons::GameInputSystemButtonGuide, // Filter to the Guide button
        nullptr, // No context
        OnGuideButton, // Callback
        &token))) // token
    {
        // Success!
    }
}
```

## 需求

**標頭：** GameInput.h

**程式庫：** gameinput.lib

**支援的平台：** Windows、XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[GameInput 進階主題](/zh-TW/build/core-features/common/input/advanced/input-advanced-topics)<br />
[GameInput 概觀](/zh-TW/build/core-features/common/input/overviews/input-overview)<br />
[IGameInput](/zh-TW/reference/input/gameinput/interfaces/igameinput/igameinput)

## 版本歷程記錄

| 版本 | 變更 |
| - | - |
| **v0** | 已推出。 |


## Related topics

- [IGameInput::RegisterSystemButtonCallback](/reference/input/gameinput/interfaces/igameinput/methods/igameinput_registersystembuttoncallback.md)
- [GameInputSystemButtonCallback](/reference/input/gameinput/functions/gameinputsystembuttoncallback.md)
- [IGameInput::RegisterGuideButtonCallback](/reference/input/gameinput/deprecated/interfaces/igameinput/methods/igameinput_registerguidebuttoncallback.md)
