Gamepad 类

定义

表示游戏板。

public ref class Gamepad sealed
public ref class Gamepad sealed : IGameControllerBatteryInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Gamepad final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Gamepad final : IGameControllerBatteryInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Gamepad
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Gamepad : IGameControllerBatteryInfo
Public NotInheritable Class Gamepad
Public NotInheritable Class Gamepad
Implements IGameControllerBatteryInfo
继承
Object Platform::Object IInspectable Gamepad
属性
实现

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

以下代码片段演示如何循环访问 Gamepad.Gamepads 列表并将每个列表添加到向量。 需要锁定向量,因为 (控制器可能断开连接或重新连接(例如) )随时都会发生更改。

#include <concrt.h>
#include <winrt/Windows.Gaming.Input.h>
using namespace winrt;
using namespace Windows::Gaming::Input;
...
std::vector<Gamepad> myGamepads;
concurrency::critical_section myLock{};

for (auto const& gamepad : Gamepad::Gamepads())
{
    // Test whether the gamepad is already in myGamepads; if it isn't, add it.
    concurrency::critical_section::scoped_lock lock{ myLock };
    auto it{ std::find(begin(myGamepads), end(myGamepads), gamepad) };

    if (it == end(myGamepads))
    {
        // This code assumes that you're interested in all gamepads.
        myGamepads.push_back(gamepad);
    }
}
auto myGamepads = ref new Vector<Gamepad^>();
critical_section myLock{};

for (auto gamepad : Gamepad::Gamepads)
{
    // Test whether the gamepad is already in myGamepads; if it isn't, add it.
    critical_section::scoped_lock lock{ myLock };
    auto it = std::find(begin(myGamepads), end(myGamepads), gamepad);

    if (it == end(myGamepads))
    {
        // This code assumes that you're interested in all gamepads.
        myGamepads->Append(gamepad);
    }
}

注解

无法直接创建 Gamepad 类的实例;而是通过列出所有连接的 游戏板Gamepad.Gamepads 属性或通过 Gamepad.GamepadAdded 事件检索 Gamepad 类的 实例。

支持的设备

游戏板 支持任何 GIP (游戏输入协议) 或 XUSB 兼容的游戏板。

版本历史记录

Windows 版本 SDK 版本 增值
1607 14393 GetButtonLabel
1703 15063 FromGameController
1703 15063 TryGetBatteryReport

属性

Gamepads

所有已连接游戏板的列表。

Headset

连接到游戏板的音频耳机。

IsWireless

获取一个值,该值指示游戏板的无线状态。

User

与游戏板关联的用户。

Vibration

描述游戏板马达速度。

方法

FromGameController(IGameController)

以游戏板的形式返回给定的游戏控制器。

GetButtonLabel(GamepadButtons)

检索指定按钮的按钮标签。

GetCurrentReading()

获取游戏板状态的快照。

TryGetBatteryReport()

获取有关游戏板当前电池状态的信息。

事件

GamepadAdded

连接新游戏板时发出信号。

GamepadRemoved

当游戏板断开连接时发出信号。

HeadsetConnected

当头戴显示设备连接到游戏板时发出信号。

HeadsetDisconnected

当头戴显示设备与游戏板断开连接时发出信号。

UserChanged

与游戏板关联的用户发生更改时发出信号。

适用于

另请参阅