Godot: Input.set_mouse_mode (Input.MOUSE_MODE_HIDDEN) menyembunyikan kursor bahkan di jendela chrome

Dibuat pada 5 Mei 2016  ·  3Komentar  ·  Sumber: godotengine/godot

Sistem atau perangkat operasi:
Windows 10 Pro x64

Deskripsi masalah (apa yang terjadi, dan apa yang diharapkan):
Menggunakan Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) menyembunyikan kursor sistem tidak hanya di dalam area klien tempat game ditampilkan, tetapi juga menyembunyikannya di atas jendela chrome / border / frame / non-client area. Ini membuatnya sulit untuk menekan tombol minimalkan / maksimalkan / tutup. Mungkin ini bisa dioptimalkan.

bug windows core

Komentar yang paling membantu

Beberapa kemajuan telah dibuat di sini di garpu saya: https://github.com/mattiascibien/godot/tree/hide-cursor-fix

Semua 3 komentar

Tidak dapat mereproduksi ini di Linux X11, jadi saya akan menganggap ini bug dalam kode platform Windows.

Saya kira masalahnya terletak pada panggilan ke Win32API ShowCursor(p_mode==MOUSE_MODE_VISIBLE); yang sebenarnya menyembunyikan kursor secara global dan tidak hanya untuk area klien.

Tampaknya untuk menyembunyikan kursor, panggilan ke SetCursor(NULL) harus dilakukan. Fungsi ini juga mengembalikan kursor terakhir yang digunakan saat dipanggil jadi saya kira kita bisa menyimpannya dalam variabel untuk mengembalikannya nanti dengan SetCursor(old_cursor) .

Saya tidak tahu bagaimana ini akan berlaku dalam layar penuh.

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

EDIT: sesuai ini tampaknya setcursor harus dilakukan di dalam loop pesan jendela.

EDIT2: yang menurut saya harus kita lakukan adalah menggunakan loop OS_Windows :: WndProc untuk menyembunyikan dan menampilkannya dengan kasus ini. Saya sedang memikirkan solusi. Segera setelah saya menemukan satu, saya akan terus mengabari Anda.

Beberapa kemajuan telah dibuat di sini di garpu saya: https://github.com/mattiascibien/godot/tree/hide-cursor-fix

Apakah halaman ini membantu?
0 / 5 - 0 peringkat