C++ 使用Xbox 360控制器进行鼠标模拟

C++ 使用Xbox 360控制器进行鼠标模拟,c++,winapi,emulation,device-emulation,xinput,C++,Winapi,Emulation,Device Emulation,Xinput,我正在编写一个小程序,用我的Xbox 360控制器模拟鼠标。我已经成功地实现了光标的移动,但在单击时遇到了困难 以下是我的代码片段: while (msg.message != WM_QUIT) { if (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else {

我正在编写一个小程序,用我的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%确定这是正确的方法,但我正试图在按下A按钮时向所有顶级窗口发送
WM_LBUTTONDOWN
消息。但是,当我把鼠标放在一个按钮上,然后按下a时,按钮会闪烁,就像被点击了一样,但是什么也没发生


如果有人能给我指出正确的方向或提供一种替代方法,我将非常感激

我认为,与其使用PostMessage,不如使用API,甚至可以使用PostMessage。它允许您在更抽象的级别上合成鼠标事件