# 功能变更 ID: Feature-20260409-0002 > 适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。 > 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。 ## 基本信息 - ID: Feature-20260409-0002 - 标题: Dialog 与 MessageBox 行为调整 - 状态:已完成 - 类型:修改 - 级别:L2 中等 - 模块:Dialog / MessageBox / Window - 版本 / 分支:`master` - 环境:Windows + EasyX + VS2022 - 负责人:Codex 协作修改 ## 变更背景 - 背景: - 初始版本中 `Dialog` 的初始化、resize、标题绘制和 `MessageBox` 外层调用关系较松散。 - 目标: - 明确 `Dialog` 行为边界,让其在 resize、显示、关闭、标题更新等场景更稳定。 - 不做什么:[可选] - 暂不重命名 `setInitialization()` 这类历史接口。 ## 变更内容 - 变更摘要: - `Dialog` 在窗口变化时只重新居中;标题直接由 `Dialog` 自身绘制;`MessageBox` 不再外层强制初始化。 - 新增项:[可选] - `Dialog::recenterInHostWindow()` - 修改项:[可选] - `SetTitle / SetMessage / SetType` 触发重新布局 - `Dialog` 标题不再使用独立 `Label` - `Dialog` 在模态和非模态场景中的重绘语义被收紧 - 删除 / 废弃项:[可选] - `MessageBox::showAsync/showModal()` 中对 `setInitialization(true)` 的直接调用已移除 - 受影响的文件 / 类 / 函数: - `Dialog.h / Dialog.cpp` - `MessageBox.cpp` - `Window.cpp` - 对外 API / 属性变化:[可选] - `Dialog` 在窗口变化时的对外可观察行为改为“只居中,不拉伸” ## 行为对照 - 变更前: - `Dialog` resize 时可能重建行为与快照行为混杂,标题区域额外依赖子控件快照。 - 变更后: - `Dialog` 尺寸由内容决定;窗口变化只重新居中;标题直接绘制,减少一层快照时序问题。 - 兼容性说明:部分兼容 - 迁移说明:[可选] - 如果外部逻辑曾假设 `Dialog` 会跟随窗口拉伸,现在需要改按“仅居中”理解 ## 验证与落地 - 验证方式: - `KEY == 2 / 3 / 4` 相关场景静态推演与回归 - 验证结果: - 标题更新、消息框初始化链、resize 后位置语义更稳定 - 关联 BUG / Fix:[可选] - `BUG-20260409-0001` - `Fix-BUG-20260409-0001` - Commit: - `4a6e153` - `7f8431a` - 当前工作区部分未提交整理 - PR:[可选] - 发布版本:[可选] - 备注:[可选]