- 3
- 0
- 约1.74千字
- 约 14页
- 2019-01-29 发布于江西
- 举报
第3章 MFC应用程序框架(2);Document/View结构;在MFC中引入了文档/视(Doc/View)结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口。
用AppWizard生成SDI程序,看一下由框架生成的类。
一个完整的应用一般由五个类组成:
1. CWinApp应用程序类
2. CFrameWnd窗口框架类
3. CDocTemplate文档模板类
4. CDocument文档类
5. CView视类。 ;应用程序对象;virtual BOOL OnNewDocument()
文件?新建,此菜单的消息响应函数OnFileNew(在工程中不可见)在MFC内部响应,此函数创建文档对象(生命期直到主框架窗口被销毁),框架对象和视对象,OnFileNew再调用虚函数OnNewDocument()来初始化文档对象的数据成员。
virtual void DeleteContents()
清理文档数据
;一般来讲我们只需对文档和视进行操作,框架的各种行为已经被MFC安排好了而不需人为干预,这也是MS设计文档-视结构的本意,让我们将注意力放在完成任务上而从界面编写中解放出来。 ;在应用中一个视对应一个文档,但一个文档可以包含多个视。
一个应用中只用一个框架窗口,对多文档界面来讲可能有多个MDI子窗口。
每一个视都是一个子窗口,在SDI中框架窗口由CFrameWnd派生,在MDI中主窗口框架由CMDIFrameWnd派生,子窗口由CMDIChildWnd派生。
一个多文档应用中可以包含多个文档模板,一个模板定义了一个文档和一个或多个视之间的对应关系。同一个文档可以属于多个模板,但一个模板中只允许定义一个文档。同样一个视也可以属于多个文档模板。 ;文档/视图结构的优点:;包含多个类的MFC文档/视图结构应用程序要管理这些类中的数据,除了考虑在程序的哪一部分拥有数据和在哪一部分显示数据,一个主要的问题是文档数据更改后如何保持视图显示的同步,即文档与视图如何进行交互。
在文档、视图和应用程序框架之间包含了一系列复杂的相互作用过程,文档与视图的交互是通过类的公有成员变量和成员函数实现的。;1.视图类的成员函数GetDocument()
一个视图对象只有一个与之相关联的文档对象。在MFC应用程序中,视图对象通过调用成员函数函数GetDocument()得到当前文档。GetDocument()是视图类的成员函数,调用它可以返回与视图相关联的文档对象的指针,利用这个指针可以访问文档类及其派生类的公有成员。
当利用MFC AppWizard向导创建一个SDI单文档应用程序Mysdi时,生成了视图类的一个派生类,并在派生类中定义了函数GetDocument()。;CMysdiDoc* CMysdiView::GetDocument()
{
ASSERT(m_pDocument-
IsKindOf(RUNTIME_CLASS(CMysdiDoc)));
return (CMysdiDoc*)m_pDocument;
// m_pDocument是CArchive类的数据成员,
// 指向当前文档对象
}; 一个文档对象可以有多个与之相关联的视图对象,当一个文档的数据通过某个视图被修改后,与它关联的每一个视图都必须反映出这些修改。因此,视图在需要时必须进行重绘,即当文档数据发生改变时,必须通知到所有相关联的视图对象,以便更新所显示的数据。
更新与该文档有关的所有视图的方法是调用成员函数CDocument::UpdateAllViews()。; 当程序调用CDocument::UpdateAllViews()函数时,实际上是调用了所有相关视图的OnUpdate()函数,以更新相关的视图。需要时,可以直接在视图派生类的成员函数中调用该函数刷新当前视图。;在OnUpdate()中通过调用函数CWnd::Invalidate()刷新整个客户区,我们也可以在自己的CWnd派生类中直接调用函数Invalidate()。
您可能关注的文档
- 浅谈如何做好客户规划-盛爱梅.ppt
- 像咨询顾问一样思考v1.0.ppt
- 浅谈设计风格.ppt
- 销售代表礼议.ppt
- 浅谈市场调查-尚升升.ppt
- 销售电话沟通-林颖.ppt
- 销售公司职位体系.ppt
- 销售关系技巧.ppt
- 销售基础知识.ppt
- 销售漏斗各阶段定义与行动标准.ppt
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)