Godot: Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)は、ウィンドウクロームでもカーソルを非表示にします

作成日 2016年05月05日  ·  3コメント  ·  ソース: godotengine/godot

オペレーティングシステムまたはデバイス:
Windows 10 Pro x64

問題の説明(何が起こったのか、何が期待されたのか):
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)を使用すると、ゲームが表示されているクライアント領域内だけでなく、ウィンドウのクロム/境界線/フレーム/非クライアント領域の上にもシステムカーソルが非表示になります。 これにより、最小化/最大化/閉じるボタンを押すのが難しくなります。 多分これは最適化することができます。

bug windows core

最も参考になるコメント

ここで私のフォークでいくつかの進歩がありました: https

全てのコメント3件

Linux X11ではこれを再現できないため、Windowsプラットフォームコードのバグであると想定します。

問題は、Win32API ShowCursor(p_mode==MOUSE_MODE_VISIBLE);の呼び出しにあると思います。これは、クライアント領域だけでなく、実際にはカーソルをグローバルに非表示にします。

カーソルを非表示にするには、 SetCursor(NULL)呼び出す必要があるようです。 この関数は、呼び出されたときに最後に使用されたカーソルも返すので、後でSetCursor(old_cursor)を使用して復元するために、変数に保持できると思います。

これがフルスクリーンでどのように動作するかわかりません。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms648393(v = vs.85).aspx

編集:これによると、setcursorはウィンドウメッセージループ内で実行する必要があるようです。

EDIT2:私たちがすべきだと思うのは、実際にOS_Windows :: WndProcループを使用して、この場合は非表示にして表示することです。 私は解決策を考えています。 私がそれを思いついたらすぐに私はあなたを投稿し続けます。

ここで私のフォークでいくつかの進歩がありました: https

このページは役に立ちましたか?
0 / 5 - 0 評価