2017-01-06 13 views
0

그래서 내 프로그램과 함께 xinput을 사용하고 있습니다. 따라서 모든 하나의 컨트롤러를 검색 할 수 있도록 설정되어 작동합니다. 나는 컨트롤러의 버튼을 눌렀을 때를 감지 할 수 있기를 원한다. 프로그램을 시작할 때 버튼을 누르고 있으면 내가 사용하는 절차가 작동합니다. 나는 if 명령 설정을 잠시 동안 가지고 있으므로 내 컨트롤러에서 A를 누르면 어떤 이유로 값이 변경되지 않더라도 지속적으로 실행됩니다.XINPUT_GAMEPAD_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") 

답변

0

귀하의 문제 만 XInputGetState를 호출하는 것입니다 여기에

내 코드입니다 시작시 한 번. 프로그램이 실행하는 모든 프레임에서 XInputGetState를 호출하여 상태 정보를 업데이트 할 수 있어야합니다.