深入浅出MFC学习笔记(第7章:简单而完整的MFC骨干程序)

第七章简单而完整的MFC骨干程序。

这一章主要是剖析有AppWizard产生的完整的MFC骨干程序。

首先要熟记MFC类层次结构,这是理解MFC构建的前提。

MFC层次结构图:文档视图结构是MFC进化为应用程序框架的灵魂,在MFCCDocument负责处理数据,它只是个空壳,我们可以重写Serialze函数,派生符合我们需求的类。与CDocument相辅相成的是CView类,它是负责数据得显示的类,同时它还负责程序与使用者之间的交互。使用者对数据的修改都需要依赖CView类的响应。

有关文件读写的操作是由CDocument中的Serilize虚函数负责的。有关显示的操作是在CView中的OnDraw虚函数中处理的。当我们派生自己的两个类CMyDocCMyView,只要把所有精力花在CMyDoc::SerializeCMyView::OnDraw身上就可以了。

先介绍DocumentTemplate,在文档视图结构中,虽然CView负责显示,但是它的外围必须有一个外框窗口作为舞台。也可以说DocumentTemplateView窗口的一个容器,数据,数据的显示,以及容纳数据显示的窗口,它们是一体的。缺一不可。

程序每打开一个文件就应该产生三个对象:

1:CDocument对象。

2:CView对象。

3:外框窗口CMDIChildWnd对象。

这些对象是由DocumentTemplate对象进行管理

如:CMultiDocTemplate*pDocTemplate=newCMultiDocTemplate(IDR_SCRIBTYPE,

RUNTIME_CLASS(CMyDoc),

RUNTIME_CLASS(CChildFrame),

RUNTIME_CLASS(CMyView)

);

AddDocTemplate(pDocTemplate);

如果程序支持不同的文件格式,就需要不同的CMultiDocTemplate。它的第一个参数,表示此文件类型所使用的资源,如ICONMENU和字符串资源。字符串资源用以完整描述文件类型。这可以在程序中获得,通过调用CDocTemplate::GetDocString

RUNTIME_CLASS是一个宏,返回传递来的类中的CRuntimeClass静态对象。因此,每当使用者打开一份文件,Documenttemplate就能根据此创建三个对象,打开并显示相应文件。

因此在CMyWinAppInitInstance中首先new了一个CMultiDocTemplate对象,它用于管理DocumentviewFrame窗口。

LoadFrame用于产生主窗口并加载菜单,同时制定窗口标题、文件标题、扩展名等。LoadFrame内部将调用Create,后者将调用CreateWindowEx,触发WM_CREATE消息。

  一份Document可以映射给多个View显示,使用者对Document的任何操作都必须通过DocumentFrame窗口,消息随后传到CView

  构建主窗口有两个步骤,首先new一个CMDIFrameWnd对象,然后调用其LoadFrame函数,在此函数内会调用Create函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值