# 补充记录-20260409-窗口最大化收口保护 ## 说明 - 本文件用于补充记录 2026-04-09 当天新增的窗口最大化收口问题。 - 对应修改发生在 `f567369` 快照之后,当前仍位于工作区未提交状态。 ## 问题概述 - 现象: - 某些窗口初始尺寸下,直接点击最大化会出现黑背景、控件残影。 - 若先手动拖拽窗口略微放大,再最大化,则问题消失。 - 影响用例: - `KEY == 1` - `KEY == 2` - 不受影响用例: - `KEY == 3` - `KEY == 4` ## 根因 - [`Window.cpp`](D:/programming/imGUI-easyX/imGui-easyX/Window.cpp) 的 `runEventLoop()` resize 收口中存在一段历史“跨度保护”。 - 该保护把“宽高变化超过 1000”视为异常帧,直接终止收口: - 不再执行 `adaptiveLayout` - 不再执行 `Resize` - 不再执行 `redrawScene(true, true)` - 因此新暴露区域不会被完整刷新,最终表现为黑背景与残影。 ## 本次新增记录 - BUG: - [`BUG-20260409-0003 直接最大化触发收口保护导致黑背景与残影`](./BUG/BUG-20260409-0003-直接最大化触发收口保护导致黑背景与残影.md) - Fix: - [`Fix-BUG-20260409-0003 直接最大化触发收口保护导致黑背景与残影`](./Fix/Fix-BUG-20260409-0003-直接最大化触发收口保护导致黑背景与残影.md) - 功能变更: - [`Feature-20260409-0006 窗口最大化收口保护调整`](./功能变更/Feature-20260409-0006-窗口最大化收口保护调整.md) ## 修改摘要 - 将“跨度过大即跳过”改为“仅非法尺寸才跳过”。 - 非法尺寸标准: - `actualWidth <= 0` - `actualHeight <= 0` - `actualWidth > max(10000, virtualScreenWidth * 2)` - `actualHeight > max(10000, virtualScreenHeight * 2)` - 对“大跨度但合法”的 resize 保留 `DEBUG` 日志,但继续执行完整收口。 - 顺手删除了 `Window.cpp` 中未使用的 `ExMessage mm;` 遗留变量。 ## 当前状态 - 代码修改:已完成,待提交 - 文档记录:已补充 - 验证状态: - 已完成源码级编译验证 - 待用户做 GUI 回归