【问题标题】:Mouse emulation using an Xbox 360 controller使用 Xbox 360 控制器的鼠标模拟
【发布时间】:2011-11-01 07:56:40
【问题描述】:

我正在编写一个小程序来用我的 Xbox 360 控制器模拟鼠标。我已经成功实现了光标的移动,但是点击有困难。

这是我的代码的 sn-p:

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 时,按钮会闪烁,好像它被点击了一样,但是什么也没有发生。

如果有人能指出我正确的方向或提供另一种方法来做到这一点,我将不胜感激!

【问题讨论】:

    标签: c++ winapi emulation device-emulation xinput


    【解决方案1】:

    我认为,您宁愿使用mouse_event API 甚至SendInput,而不是 PostMessage。它允许您在更抽象的层次上合成鼠标事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多