C++11 XINPUT_GAMEPAD_A不工作,除非在程序启动时按住按钮

C++11 XINPUT_GAMEPAD_A不工作,除非在程序启动时按住按钮,c++11,xinput,C++11,Xinput,所以我在我的程序中使用xinput,它已经设置好并运行了,所以我可以检测我的xbox one控制器。我希望能够检测控制器上的按钮何时被按下。如果我在程序启动时按下按钮,我使用的程序就会工作。我在一段时间内设置了if命令,因此它会持续执行,尽管由于某些原因,当我在控制器上按a时,该值不会改变 所以基本上,如果我在程序打开时按住A键,它就会工作并在屏幕上返回cout。虽然如果我想在程序启动后按一下它,这是我想要的工作,但它不会检测到它 这是我的密码: using namespace std; XIN

所以我在我的程序中使用xinput,它已经设置好并运行了,所以我可以检测我的xbox one控制器。我希望能够检测控制器上的按钮何时被按下。如果我在程序启动时按下按钮,我使用的程序就会工作。我在一段时间内设置了if命令,因此它会持续执行,尽管由于某些原因,当我在控制器上按a时,该值不会改变

所以基本上,如果我在程序打开时按住A键,它就会工作并在屏幕上返回cout。虽然如果我想在程序启动后按一下它,这是我想要的工作,但它不会检测到它

这是我的密码:

using namespace std;
XINPUT_STATE state;

bool A_button_pressed;
int online;
int test;

int main() {
    if (XInputGetState(0, &state) == ERROR_SUCCESS)
    {
        online = 1;
        cout << "I could find a controller, it is an Xbox Controller" << endl;
    } else {
        online = 2;
        cout << "Unable to find controller, searching..." << endl;
    }
    cout << A_button_pressed << endl;
        cout << "Active" << endl;
        while (online == 1) {
            bool A_button_pressed = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_A) != 0);
            cout << A_button_pressed << endl;
            if (A_button_pressed = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_A) != 0)) {
                cout << "You pressed a button, congrats, game over..." << endl;
            }
        };
}
据我所知,我按照正确的顺序包括所有正确的库:

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <Xinput.h>
#pragma comment(lib, "Xinput.lib")
#pragma comment(lib, "Xinput9_1_0.lib")

您的问题是在启动时只调用XInputGetState一次。必须在程序运行的每一帧调用XInputGetState,以便更新状态信息