# 功能变更 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：[可选]
- 发布版本：[可选]
- 备注：[可选]
