2025-09-24 16:43:10 +08:00
|
|
|
|
# 窗口创建完成事件
|
|
|
|
|
|
|
|
|
|
|
|
<cite>
|
|
|
|
|
|
**本文档引用文件**
|
|
|
|
|
|
- [WindowFormEventManager.ts](file://src/events/WindowFormEventManager.ts)
|
2025-10-10 10:37:11 +08:00
|
|
|
|
- [WindowFormService.ts](file://src/services/WindowFormService.ts)
|
2025-09-24 16:43:10 +08:00
|
|
|
|
</cite>
|
|
|
|
|
|
|
|
|
|
|
|
## 目录
|
|
|
|
|
|
1. [事件语义与调用时机](#事件语义与调用时机)
|
|
|
|
|
|
2. [应用场景分析](#应用场景分析)
|
|
|
|
|
|
3. [事件监听代码范例](#事件监听代码范例)
|
|
|
|
|
|
4. [生命周期时序关系](#生命周期时序关系)
|
|
|
|
|
|
|
|
|
|
|
|
## 事件语义与调用时机
|
|
|
|
|
|
|
|
|
|
|
|
`windowFormCreated` 事件在新窗口实例成功挂载并完成首次渲染后触发,标志着窗口已完全初始化并可交互。该事件不携带任何参数,作为全局窗口创建完成的信号。
|
|
|
|
|
|
|
2025-10-10 10:37:11 +08:00
|
|
|
|
根据 `WindowFormEventManager.ts` 中的定义,此事件是 `IWindowFormEvent` 接口的一部分,由 `wfem` 事件管理器负责分发。虽然当前实现中未直接显示触发逻辑,但结合 `WindowFormService.ts` 的窗口创建流程可知,该事件应在 `createWindow` 方法执行完毕、DOM 元素已添加至页面且应用内容加载完成后被通知。
|
2025-09-24 16:43:10 +08:00
|
|
|
|
|
|
|
|
|
|
**Section sources**
|
|
|
|
|
|
- [WindowFormEventManager.ts](file://src/events/WindowFormEventManager.ts#L41-L41)
|
2025-10-10 10:37:11 +08:00
|
|
|
|
- [WindowFormService.ts](file://src/services/WindowService.ts#L83-L118)
|
2025-09-24 16:43:10 +08:00
|
|
|
|
|
|
|
|
|
|
## 应用场景分析
|
|
|
|
|
|
|
|
|
|
|
|
### 启动引导
|
|
|
|
|
|
在系统启动或模块初始化过程中,通过监听 `windowFormCreated` 事件可以确保所有核心窗口均已准备就绪,从而安全地执行后续引导逻辑,如自动聚焦主窗口或初始化关联组件。
|
|
|
|
|
|
|
|
|
|
|
|
### 任务栏更新
|
|
|
|
|
|
当新窗口创建完成后,任务栏组件可通过监听该事件实时更新其窗口列表,确保用户界面状态与实际运行情况保持同步。
|
|
|
|
|
|
|
|
|
|
|
|
### 快捷方式激活
|
|
|
|
|
|
从桌面快捷方式启动应用时,该事件可用于确认目标窗口已成功打开,进而执行焦点切换或动画展示等增强用户体验的操作。
|
|
|
|
|
|
|
|
|
|
|
|
**Section sources**
|
|
|
|
|
|
- [WindowFormEventManager.ts](file://src/events/WindowFormEventManager.ts#L41-L41)
|
2025-10-10 10:37:11 +08:00
|
|
|
|
- [WindowFormService.ts](file://src/services/WindowService.ts#L83-L118)
|
2025-09-24 16:43:10 +08:00
|
|
|
|
|
|
|
|
|
|
## 事件监听代码范例
|
|
|
|
|
|
|
|
|
|
|
|
以下为监听 `windowFormCreated` 事件并执行后续操作的典型代码模式:
|
|
|
|
|
|
|
|
|
|
|
|
```typescript
|
|
|
|
|
|
import { wfem } from '@/events/WindowFormEventManager'
|
|
|
|
|
|
|
|
|
|
|
|
// 监听窗口创建完成事件
|
|
|
|
|
|
wfem.addEventListener('windowFormCreated', () => {
|
|
|
|
|
|
// 执行日志记录
|
|
|
|
|
|
console.log('新窗口创建完成')
|
|
|
|
|
|
|
|
|
|
|
|
// 执行自动聚焦或其他初始化操作
|
|
|
|
|
|
// focusMainWindow()
|
|
|
|
|
|
})
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
此类监听器常用于执行一次性初始化任务,例如设置默认焦点、注册快捷键、加载用户偏好设置或发送性能监控指标。
|
|
|
|
|
|
|
|
|
|
|
|
**Section sources**
|
|
|
|
|
|
- [WindowFormEventManager.ts](file://src/events/WindowFormEventManager.ts#L60-L60)
|
2025-10-10 10:37:11 +08:00
|
|
|
|
- [WindowFormService.ts](file://src/services/WindowService.ts#L83-L118)
|
2025-09-24 16:43:10 +08:00
|
|
|
|
|
|
|
|
|
|
## 生命周期时序关系
|
|
|
|
|
|
|
|
|
|
|
|
`windowFormCreated` 事件作为窗口生命周期的起点,在以下关键阶段之后发生:
|
|
|
|
|
|
1. **CREATING**:窗口对象创建
|
|
|
|
|
|
2. **LOADING**:DOM 元素构建与插入
|
|
|
|
|
|
3. **ACTIVE**:窗口激活并获得焦点
|
|
|
|
|
|
|
|
|
|
|
|
它早于任何用户交互事件(如 `windowFormFocus`)和状态变更事件(如 `windowFormMinimize`),是首个表示窗口已进入稳定可用状态的全局事件。
|
|
|
|
|
|
|
|
|
|
|
|
与其他事件相比,`windowFormCreated` 是唯一无参数的创建完成信号,而其他事件如 `windowFormDataUpdate` 则携带具体的状态数据。这种设计使其成为理想的初始化钩子点。
|
|
|
|
|
|
|
|
|
|
|
|
**Section sources**
|
|
|
|
|
|
- [WindowFormEventManager.ts](file://src/events/WindowFormEventManager.ts#L41-L41)
|
2025-10-10 10:37:11 +08:00
|
|
|
|
- [WindowFormService.ts](file://src/services/WindowService.ts#L83-L118)
|