Godot: Input.set_mouse_mode (Input.MOUSE_MODE_HIDDEN) يخفي المؤشر حتى على نافذة الكروم

تم إنشاؤها على ٥ مايو ٢٠١٦  ·  3تعليقات  ·  مصدر: godotengine/godot

نظام التشغيل أو الجهاز:
نظام التشغيل Windows 10 Pro x64

وصف المشكلة (ما حدث وما كان متوقعا):
يؤدي استخدام Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN) إخفاء مؤشر النظام ليس فقط داخل منطقة العميل حيث يتم عرض اللعبة ، بل إنه يخفيها أيضًا أعلى نافذة الكروم / الحدود / الإطار / منطقة غير العميل. هذا يجعل من الصعب الضغط على أزرار التصغير / التكبير / الإغلاق. ربما يمكن تحسين هذا.

bug windows core

التعليق الأكثر فائدة

تم إحراز بعض التقدم هنا في مفترقتي: https://github.com/mattiascibien/godot/tree/hide-cursor-fix

ال 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 = 85) .aspx

تحرير: وفقًا لهذا ، يبدو أن المؤشر يجب أن يتم داخل حلقة رسالة النافذة.

EDIT2: ما أعتقد أنه يجب علينا فعله هو استخدام حلقة OS_Windows :: WndProc لإخفائها وإظهارها مع هذه الحالة. أنا أفكر في الحلول. حالما أتوصل إلى واحدة سأبقيك على اطلاع.

تم إحراز بعض التقدم هنا في مفترقتي: https://github.com/mattiascibien/godot/tree/hide-cursor-fix

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات