我正在尝试将 XInput API 用于我的游戏引擎(我正在使用 DirectX11 和 C++)。我只想测试是否找到了控制器,所以我#included 并调用 XInputGetState 但我得到了一个奇怪的行为:
XINPUT_STATE state;
ZeroMemory(&state, sizeof(XINPUT_STATE));
DWORD result;
for (DWORD i = 0; i < XUSER_MAX_COUNT; i++)
{
result = XInputGetState(i, &state);
if (result == ERROR_SUCCESS)
ErrorBox(L"found controller on port ");
}
如果我连接控制器,程序会挂起并冻结,而如果我断开控制器,游戏就会启动。如果我使用调试器进入代码,结果是找到了控制器并显示了消息框。为什么?
编辑 问题似乎出在对 ErrorBox 的调用中:此函数仅使用 Win32 API 显示一个消息框。