نظام التشغيل أو الجهاز:
نظام التشغيل Windows 10 Pro x64
وصف المشكلة (ما حدث وما كان متوقعا):
يؤدي استخدام Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
إخفاء مؤشر النظام ليس فقط داخل منطقة العميل حيث يتم عرض اللعبة ، بل إنه يخفيها أيضًا أعلى نافذة الكروم / الحدود / الإطار / منطقة غير العميل. هذا يجعل من الصعب الضغط على أزرار التصغير / التكبير / الإغلاق. ربما يمكن تحسين هذا.
لا يمكن إعادة إنتاج هذا على 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
التعليق الأكثر فائدة
تم إحراز بعض التقدم هنا في مفترقتي: https://github.com/mattiascibien/godot/tree/hide-cursor-fix