2011-11-01 3 views
2

Xbox 360 컨트롤러로 마우스를 에뮬레이션 할 수있는 작은 프로그램을 작성하고 있습니다. 커서 이동을 성공적으로 구현했지만 클릭 수에 문제가 있습니다. 여기 Xbox 360 컨트롤러를 사용하는 마우스 에뮬레이션

내 코드의 조각입니다 :

while (msg.message != WM_QUIT) { 
    if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } else { 

     ...   

     if (state.Gamepad.wButtons & XINPUT_GAMEPAD_A) { 
      PostMessage(HWND_BROADCAST, WM_LBUTTONDOWN, 0, MAKEWORD(new_x, new_y)); 
     } 

     ...  
    } 
} 

나는 이것이 올바른 접근 방식 100 % 확실하지 않다하지만 난 모든 최상위 창에 WM_LBUTTONDOWN 메시지를 보내려고 할 때 버튼을 누릅니다. 그러나 버튼 위에 마우스를 놓고 A을 누르면 버튼이 클릭 한 것처럼 깜박이지만 아무 일도 일어나지 않습니다.

누구든지 올바른 방향으로 나를 가리킬 수 있거나이를 수행 할 수있는 대체 방법을 제공한다면 매우 감사 할 것입니다.

답변

2

PostMessage 대신 mouse_event API 또는 SendInput을 사용하는 것이 좋습니다. 보다 추상적 인 레벨에서 마우스 이벤트를 합성 할 수 있습니다.