3

SDL 2.0でマウスの初期位置を取得する方法はありますか?
でマウス座標を取得しようとしましたがSDL_GetMouseState(&mouse_x,&mouse_y)、関数を使用した後にのみ期待した結果が得られ、プログラムの開始以来マウスが少なくとも1回動かされていない場合SDL_PollEvent()以外は値が表示されません。 SDL_MOUSEMOTION(0,0)をチェックせずに接続すると、マウスが動かされたときにのみマウス座標が取得されます。何が問題なのですか? またはそうするのに適していますか? 編集:なぜ、なぜ答えがないのですか?SDL_GetMouseState()SDL_GetMouseState()

4

3 に答える 3

2

SDLは、同じファイル内のさまざまなマウス関連関数によって呼び出されるSDL_PrivateSendMouseMotionで内部的にマウスの位置を更新します。

これらの関数は、Windows が送出するマウス イベントに応答して、イベント ループ処理関数WIN_WindowProcで呼び出されます。

したがって、マウスを動かさない場合、イベントは送出されず、SDL はマウスがどこにあるかを認識しません。解決策は、位置を要求する前にマウス イベントを待ち、このイベントまでの回避策を見つけることです。

于 2013-09-02T13:40:01.823 に答える
1

遅いことはわかっていますが、見つけた解決策に少しずつ取り組んでいます。座標がゼロの場合は、SDL_GetGlobalMouseState(&x, &y) を呼び出してから、x と y を window.x と window.y 座標でオフセットします。

于 2021-07-11T15:36:42.653 に答える