IGameInput::RegisterSystemButtonCallback (v0)

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

语法

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

参数

device _In_opt_
类型:IGameInputDevice*

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

buttonFilterIn 要接收回调的按钮集中,逻辑 ORed 在一起。 context _In_opt_
类型:void*

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

callbackFunc _In_
类型:GameInputSystemButtonCallback

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

callbackToken _Out_opt_
类型:GameInputCallbackToken*

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

返回值

类型:HRESULT

成功时返回 S_OK

备注

在按下或释放“指南”或“系统”按钮时,此方法注册调用的回调函数。 是否分配回调取决于进程和其他进程中由 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

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

高级 GameInput 主题
概述 GameInput
IGameInput