# 功能变更 ID: Feature-20260409-0001

> 适用场景：记录小到中等规模的功能、接口、行为、默认值或配置变化。
> 不适用场景：新增核心模块、重大模块重构、架构级设计，请使用“新增功能模块”模板。

## 基本信息

- ID: Feature-20260409-0001
- 标题: 基础资源所有权与生命周期收口
- 状态：已完成
- 类型：修改
- 级别：L2 中等
- 模块：Control / Window / Button / Table / Label
- 版本 / 分支：`master`
- 环境：Windows + EasyX + VS2022
- 负责人：Codex 协作修改

## 变更背景

- 背景:
  - 初始版本中一部分资源持有关系不明确，析构顺序和边界输入处理存在隐患。
- 目标:
  - 提高基础稳定性与维护性。
- 不做什么：[可选]
  - 不处理字符集体系切换问题。

## 变更内容

- 变更摘要:
  - 收紧资源所有权，调整析构顺序，补齐基础控件边界防御。
- 新增项：[可选]
  - `Control` 提供更明确的快照有效性查询和宿主窗口回溯能力。
- 修改项：[可选]
  - `Window` 析构顺序调整
  - `Table` 行数据规范化、空状态防御、页数保护
  - `Label` 动态文本变化处理
- 删除 / 废弃项：[可选]
  - `MessageBox` 外层强制 `Dialog` 初始化的做法被移除
- 受影响的文件 / 类 / 函数:
  - `Control.h / Control.cpp`
  - `Window.h / Window.cpp`
  - `Button.h / Button.cpp`
  - `Table.h / Table.cpp`
  - `Label.cpp`
  - `MessageBox.cpp`
- 对外 API / 属性变化：[可选]
  - `Button` 回调设置接口语义更正常

## 行为对照

- 变更前:
  - 生命周期和边界输入更依赖使用者自觉，异常输入容易直接进入绘制或析构链。
- 变更后:
  - 基础控件会主动规范化一部分输入，生命周期顺序更安全。
- 兼容性说明：兼容
- 迁移说明：[可选]
  - 无强制迁移要求

## 验证与落地

- 验证方式:
  - 静态审查 + 编译验证 + 现有测试用例回归
- 验证结果:
  - 主要基础问题已收敛
- 关联 BUG / Fix：[可选]
  - `BUG-20260409-0002`
  - `Fix-BUG-20260409-0002`
- Commit:
  - 早期工作区修改 + `4a6e153` + `7f8431a`
- PR：[可选]
- 发布版本：[可选]
- 备注：[可选]
  - 其中一部分修改早于仓库基线
