BkWin 金山界面库 界面创建流程剖析
宿镜
2023-12-01
1. 读取string
2. 读取字体
3. 读取皮肤
4. 读取style(风格)
5. 对话框DoModal()
6. 按照dlg_main.xml(假设这是对话框xml定义的文件名称)里的 <layer>根元素(我把它理解为总窗口,总窗口包含header body footer) 的 width height appwin resize等属性来定义整个窗口的大体属性(我想所谓的"虚窗口"就是这个窗口吧)
7. 分别读取header body footer的属性 并根据它们的xml标签规定的控件属性来创建控件. 并且把控件分别加入它们自己的m_lstWndChild链表里.(body的控件就加入m_bkBody的m_lstWndChild成员变量里)
8. 定义header footer body在总窗口上的位置
9. 创建真窗口 调用WTL的HWND Create(
_In_opt_ HWND hWndParent,
_In_ _U_RECT rect = NULL,
_In_opt_z_ LPCTSTR szWindowName = NULL,
_In_ DWORD dwStyle = 0,
_In_ DWORD dwExStyle = 0,
_In_ _U_MENUorID MenuOrID = 0U,
_In_opt_ LPVOID lpCreateParam = NULL)函数.
10. 依据m_bkHeader m_bkBody m_bkFooter的m_lstWndChild来创建控件.
11. 显示所有的控件
12. 进入_ModalMessageLoop() 这个函数的消息循环