MFC文档及视图教程

MFC文档及视图教程

ID:44237036

大小:853.00 KB

页数:109页

时间:2019-10-20

MFC文档及视图教程_第1页
MFC文档及视图教程_第2页
MFC文档及视图教程_第3页
MFC文档及视图教程_第4页
MFC文档及视图教程_第5页
资源描述:

《MFC文档及视图教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MFC文档及视图教程内容:文档、视图、框架、应用四个类的相互作用函数如何添加windows消息、菜单消息和鼠标消息捕获消息,限制鼠标的范围,定制鼠标形状,菜单(动态改变菜单)滚动操作、各种坐标第6章文档及视图§6.1文档与视图的关系一、文档/视图结构概述在典型的MFC应用中,文档和视图是成对出现的。文档/视图的核心部分包括以下四个关键的类。CDocument类:为文档类提供了基本的功能,用于存储或控制程序中的数据。CView类:为视图类提供了基本的功能。视图通常依附于文档,它是文档和用户之间的协调者。CFrameWnd类:提供了文档中视图的框架窗口。CDocTempla

2、t或CSingleDocTemplate和CMultiDocTemplate类:协调一个或多个给定类型的文档,并负责创建正确的文档、视图和框架窗口对象。二、文档模板和文档/视图1、MFC对象之间的联系在MFC的应用中,包含三个对象:文档、与文档相连的视图以及包含视图的框架窗口。①文档保存了与之相连的视图的列表以及一个指向创建该文档的文档模板指针。②视图保存了指向文档的指针,它是主框架窗口的子窗口。③文档框架窗口保存了当前活动视图的指针,当另一个视图被激活时,此指针将被更新。④文档模板保存了打开文档的列表。⑤应用程序保存了它所用到的文档模板的列表。⑥Windows跟踪所有

3、打开的窗口,以便给它们发送消息。一般情况下,一个框架窗口中只包含一个视图,但在切分窗口中,同样的框架窗口可以包含多个视图指向主框架窗口的指针存储在应用对象的m_pMainWnd成员变量中。2.文档模板与文档/视图的创建文档、与文档相联系的视图以及包含视图的框架窗口都是通过一个文档模板来创建的。框架应用使用了两个文档模板类:用于SDI应用的CSingleDocTemplate类和用于MDI应用的CMultiDocTemplate类。CSingleDocTemplate模板类一次可以创建和存储一个特定类型的文档;CMultiDocTemplate模板类则可以保存多个已打开的

4、特定类型的文档。文档模板是由应用对象来创建和维护的。在应用中的InitInstance函数的关键任务就是创建一个或多个适当的文档模板。应用对象提供了增加文档模板的接口,系统调用AddDocTemplate函数即可增加文档模板。当利用File菜单中的New或Open命令创建一个新的文档时,文档模板同时也创建了一个新的框架窗口来查看该文档。文档模板的构造函数CSingleDocTemplate确定了该文档模板能够创建的文档、窗口和视图的类型。CSingleDocTemplate*pDocTemplate;pDocTemplate=newCSingleDocTemplate(

5、IDR_MAINFRAME,RUNTIME_CLASS(CWinGreetDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CWinGreetView));AddDocTemplate(pDocTemplate);三、文档和视图之间的相互作用函数文档对象是用来保存数据的,而视图对象则是用来显示数据的,并且允许对数据进行编辑。1、CView类的GetDocument()函数视图对象只有一个与之相联系的文档对象,它所包含的GetDocument()函数允许在视图中得到与之相联系的文档。GetDocument()函数返回的是指向文档的指

6、针。当ClassWizard产生CView的派生类时,它同时也创建GetDocument()函数,它返回的是指向派生文档类的指针。CWinGreetDoc*CWinGreetView::GetDocument(){ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CWinGreetDoc)));return(CWinGreetDoc*)m_pDocument;}2、CDocument类的UpdateAllViews()函数如果文档数据发生了变化,那么所有与该文档相连的视图都必须被通知到,以便对其所显示的数据进行相应的更新。在文档类的成

7、员函数中调用UpdateAllViews函数,UpdateAllViews(NULL);在视图类的成员函数中UpdateAllViews被调用,GetDocument()->UpdateAllViews(this);3、CView类的OnUpdate()函数是个虚函数,当应用调用CDocument类UpdateAllViews()函数时,会相应调用该函数。也可以直接在派生视图类中进行调用。另外,还可以利用OnUpdate函数使视图的某部分无效,以便触发视图OnDraw的函数重新对窗口进行绘制。4、CView类的OnInitialUpdat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。