关闭

VC++.NET 技术内幕学习四

583人阅读 评论(0) 收藏 举报

第十六章、读和写文档

知识点:

序列化流程

持续文档对象

Serialize

CArchive归档对象

CFile对象

磁盘

你在Serialize函数中需要做的就是,将数据存到归档对象中或从归档对象中取出。在打开或保存的处理过程中,应用程序框架会调用文档的Serialize函数。

         可序列化的类必须直接或间接地从CObject派生而来,并且在类声明中,必须包含DECLARE_SERIAL宏调用,在类的实现文件中,必须包含IMPLEMENT_SERIAL宏调用。

 

在String Table中可以通过编辑IDR_MAINFRAME来做到在底层修改窗口标题,好像也可以通过它修改菜单名等,有待验证。

 

 

MFC应用程序启动步骤:

1、Windows将程序载入内存。

2、构造全局对象theApp(当程序被载入时,所有全局对象都会立刻被创建)

3、Windows调用全局函数WinMain,它是MFC库的一部分。(WinMain是主程序的入口点)

4、WinMain自动搜索CWinApp派生类的唯一实例。

5、WinMain调用theApp的InitInstance函数,该函数在派生应用程序类中被改写。

6、被改写的InitInstance函数启动文档的载入以及主框架和视图窗口的显示处理过程。

7、WinMain调用theApp的Run成员函数,启动窗口消息和命令消息的分发处理过程。

 

 

创建空文档:CWinApp:: OnFileNew函数

应用程序类的InitInstance函数在调用了AddDocTemplate之后,会调用另一个非常重要的CWinApp成员函数OnFileNew(通过CWinApp::ProcessShellCommand间接调用)。

 

CWinApp::OnFileNew完成以下工作(通过应用程序框架间接调用)

1、构造文档对象,但并不从磁盘中读数据。

2、构造主框架对象(即类CMainFrame的对象),并创建主框架窗口,但并不对它进行显示。主框架窗口包括IDR_MAINFRAME菜单、工具栏和状态栏。

3、构造视图对象,并创建视图窗口,但并不对它进行显示。

4、建立文档、主框架和视图对象之间的相互连接。不要把这些对象之间的连接同通过调用AddDocTemplate所建立的类之间的连接混淆起来。

5、调用文档对象的CDocument::OnNewDocument虚成员函数。它会调用DeleteContents虚函数。

6、调用视图对象的CView::OnInitialUpdate虚成员函数

7、调用框架对象的CFrameWnd::ActivateFrame虚成员函数,以便显示出具有菜单、视图窗口和控制栏的主框架窗口。

 

         File | New和File | Open菜单命令被映射到了应用程序类的成员函数上,而File | Save和File | Save As则被映射到了文档类的成员函数上(CDocument::OnFileSave)。File | New被映射到了OnFileNew,而SDI应用程序中的InitInstance函数调用的也是OnFileNew(间接)。当应用程序框架调用InitInstance函数时,文档对象还未创建,因此,OnFileNew不可能是CDocument的成员函数。

 

         在SDI应用程序中,CMainFrame对象不但构成了应用程序的框架,还包含了视图对象;而在MDI应用程序中,这两部分是分开的。CMainFrame对象是在InitInstance函数中被显示创建的,而视图则包含在CChildFrame对象中。

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:563609次
    • 积分:5879
    • 等级:
    • 排名:第4294名
    • 原创:116篇
    • 转载:63篇
    • 译文:2篇
    • 评论:84条
    文章分类
    最新评论