IGameInput::RegisterSystemButtonCallback (v2)

注册在按下或释放“指南”或“共享”按钮时调用的回调函数。

语法

HRESULT RegisterSystemButtonCallback(
    IGameInputDevice* device,
    GameInputSystemButtons buttonFilter,
    void* context,
    GameInputSystemButtonCallback callbackFunc,
    GameInputCallbackToken* callbackToken
);

参数

device _In_opt_
类型:IGameInputDevice*

可选择将注册的回调限制为触发某一特定设备。

buttonFilter _In_
类型:GameInputSystemButtons

要接收其回调的按钮集,逻辑 ORed 在一起。

context _In_opt_
类型:void*

提供有关回调函数的相关信息的对象。 通常情况下,它是调用对象。

callbackFunc _In_
类型:GameInputSystemButtonCallback

游戏定义了在按下或释放系统按钮时调用的回调函数。

callbackToken _Out_opt_
类型:GameInputCallbackToken*

标识注册的回调函数的令牌。 此令牌用于在需要取消或注销回调函数时标识已注册的函数。

返回值

类型:HRESULT

函数结果。

备注

在按下或释放“指南”或“系统”按钮时,此方法注册调用的回调函数。 是否分配回调取决于进程和其他进程中由 IGameInput::SetFocusPolicy 设置的 GameInputFocusPolicy。 有关详细信息,请参阅 GameInputFocusPolicy。 在 Xbox 上,shell 始终使用导航按钮,因此不会在 Xbox 上调度这些回调。

若要停止接收回调,请参阅 IGameInput::UnregisterCallbackIGameInput::StopCallback 方法。

这已在 Windows SDK 10.0.26031 预览版 GameInput.h 中添加,并将添加到 GDK 的未来版本中。

以下代码示例演示了如何侦听导航按钮的按下操作。

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

支持的平台: 窗户

另请参阅

高级 GameInput 主题
概述 GameInput
IGameInput