2

Xbox360コントローラーでマウスをエミュレートする小さなプログラムを書いています。カーソルの移動は正常に実装できましたが、クリックに問題があります。

これが私のコードの抜粋です:

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を押すと、ボタンがクリックされたかのように点滅しますが、何も起こりません。

誰かが私を正しい方向に向けたり、これを行うための別の方法を提供したりすることができれば、私は非常に感謝しています!

4

1 に答える 1

2

PostMessageの代わりに、mouse_eventAPIまたはSendInputを使用したほういいと思います。これにより、より抽象的なレベルでマウスイベントを合成できます。

于 2011-11-01T08:01:37.267 に答える