注册在按下或释放“指南”或“共享”按钮时调用的回调函数。
语法
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::UnregisterCallback 和 IGameInput::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 主机