لقد لاحظت أنه في منفذ Windows GLFW3 ، يتم استدعاء _glfwInputFramebufferSize
و _glfwInputWindowSize
بغض النظر عن حجم النوافذ الحالي. أيضًا ، لا يتم تخزين عرض / ارتفاع النافذة في بنية win32
. قد يتسبب هذا في تكرار المكالمات إلى رد الاتصال.
أقترح تغيير رمز win32_window.c
كما يلي.
case WM_SIZE:
{
const GLFWbool iconified = wParam == SIZE_MINIMIZED;
const GLFWbool maximized = wParam == SIZE_MAXIMIZED ||
(window->win32.maximized &&
wParam != SIZE_RESTORED);
const int width = LOWORD(lParam);
const int height = HIWORD(lParam);
if (_glfw.win32.disabledCursorWindow == window)
updateClipRect(window);
if (window->win32.iconified != iconified)
_glfwInputWindowIconify(window, iconified);
if (window->win32.maximized != maximized)
_glfwInputWindowMaximize(window, maximized);
if (window->win32.width != width || window->win32.height != height) {
_glfwInputFramebufferSize(window, width, height);
_glfwInputWindowSize(window, width, height);
}
if (window->monitor && window->win32.iconified != iconified)
{
if (iconified)
releaseMonitor(window);
else
{
acquireMonitor(window);
fitToMonitor(window);
}
}
window->win32.iconified = iconified;
window->win32.maximized = maximized;
window->win32.width = width;
window->win32.height = height;
return 0;
}
من المحتمل أن يؤدي هذا إلى كسر الشفرة ، وقد يعتمد شخص ما على هذا السلوك.
من المحتمل أن يؤدي هذا إلى كسر الشفرة ، وقد يعتمد شخص ما على هذا السلوك.
قد تكون على صواب ، ولكن نظرًا لأن بنية window
تتميز بحقول العرض / الارتفاع ولم يتم تهيئتها في Windows porting ، فأعتقد أن هذا كان مجرد إشراف (ثانوي).
حسنًا ، أرى الآن أن X11 يتعامل مع هذا منذ a7ff236 و Cocoa - منذ 1fe319d (# 1085).
أعتقد أن Windows يمكنه استخدام نفس الحيلة.
هل لديك أي سيناريو حيث يمكن استدعاء هذا الحدث عندما لم يتغير الحجم؟
نعم. في الواقع ، كنت أواجه المشكلة في مشروع خاص بي حيث فتحت في البداية نافذة مخفية 1 × 1 ، ثم قمت بتغيير حجمها إلى الحجم المناسب (المحسوب) ، وأخيراً عرضتها.
مع هذا التسلسل من العمليات ، بعد ضبط حجم النافذة ، سيتم استدعاء رد الاتصال مرتين (المرة الأولى بعد تغيير الحجم ، والمرة الثانية عند عرضها).
التعليق الأكثر فائدة
حسنًا ، أرى الآن أن X11 يتعامل مع هذا منذ a7ff236 و Cocoa - منذ 1fe319d (# 1085).
أعتقد أن Windows يمكنه استخدام نفس الحيلة.
هل لديك أي سيناريو حيث يمكن استدعاء هذا الحدث عندما لم يتغير الحجم؟