应用程序框架与文档视图结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档模板: 文档模板: 作用:把程序用到的框架窗口、文档、视图、应用程序对 作用:把程序用到的框架窗口、文档、视图、 象以及有关的资源联系起来。 象以及有关的资源联系起来。 一个程序可以定义多个文档模板。 一个程序可以定义多个文档模板。
CMainFrame类 3.2 CMainFrame类 重要特性: 重要特性: (1)由MFC中的类CMainFrame派生来。 MFC中的类CMainFrame派生来。 中的类CMainFrame派生来 (2)是CTestView的父窗口。 CTestView的父窗口。 的父窗口 主要功能: 主要功能: (1)管理程序的主框架窗口。 管理程序的主框架窗口。 (2)工具条、状态条的生成和管理。 工具条、状态条的生成和管理。
CTestDoc* CTestView::GetDocument() ::GetDocument CTestDoc* CTestView::GetDocument() { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTestDoc))); ASSERT(m_pDocument- IsKindOf(RUNTIME_CLASS(CTestDoc))); CTestDoc*)m_pDocument; *)m_pDocument return (CTestDoc*)m_pDocument; }
CDocument类中GetNextView()函数 类中GetNextView() (2) CDocument类中GetNextView()函数 用来在文档中得到试图, 用来在文档中得到试图,但文档中可以对应不止一个 视图,因此,必须进行一个循环。 视图,因此,必须进行一个循环。
文档-视图之间的作用函数: 文档-视图之间的作用函数: CDocument类中UpdateAllViews()函数 类中UpdateAllViews() (3) CDocument类中UpdateAllViews()函数 更新文档对应的所有视图。当文档中的数据发生变化时 更新文档对应的所有视图。 调用,用以对显示的数据进行更新。 调用,用以对显示的数据进行更新。
CTestView::OnUpdate(CView* pSender, ::OnUpdate lHint, CObject* pHint) void CTestView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) { }
文档-视图之间的作用顺序: 文档-视图之间的作用顺序: 应用程序启动 CTestDoc对象被创建 CTestDoc对象被创建 CTestView对象被创建 CTestView对象被创建 视窗口被创建 CTestView::OnCreate被调用 CTestView::OnCreate被调用 CTestView::OnInitialUpdate被调用 CTestView::OnInitialUpdate被调用 视对象被初始化 视窗口被显示 用户编辑数据 用户退出程序 CTestView的函数更新CTestDoc中的数据 CTestView的函数更新CTestDoc中的数据 的函数更新CTestDoc CTestView对象被删除 CTestView对象被删除 CTestDoc对象被删除 CTestDoc对象被删除
CView类中常用函数: CView类中常用函数: 类中常用函数 CView类中OnDraw()函数 类中OnDraw() (1) CView类中OnDraw()函数 虚函数 视图刷新时自动调用。 视图刷新时自动调用。 CView类的OnInitialUpdate()函数 类的OnInitialUpdate() (2) CView类的OnInitialUpdate()函数 应用程序启动时,应用框架在调用了OnCreate()函数 应用程序启动时,应用框架在调用了OnCreate()函数 OnCreate() 后会立刻调用OnInitialUpdate()函数。 后会立刻调用OnInitialUpdate()函数。 OnInitialUpdate()函数 可以类用该函数对视对象进行初始化。 可以类用该函数对视对象进行初始化。
第4章 Microsoft类库基础 章 类库基础
了解MFC类库中常用的类。 了解MFC类库中常用的类。 MFC类库中常用的类
Microsoft类库概述 4.1 Microsoft类库概述 核心是以C++类的形式封装的Windows API。 核心是以C++类的形式封装的Windows API。 C++类的形式封装的 几乎覆盖了我们通常编程中所用到的所有基本功能。 几乎覆盖了我们通常编程中所用到的所有基本功能。 我们可以在此基础上派生出我们自己的类, 我们可以在此基础上派生出我们自己的类,加上所需的特 性和方法,完成具体的任务。 性和方法,完成具体的任务。 根类: 4.2 根类:CObject 类库中的绝大多数类都由此派生。 类库中的绝大多数类都由此派生。 该类提供了一些有用的功能,包括数据序列化、对象赋值、 该类提供了一些有用的功能,包括数据序列化、对象赋值、 类的兼容、类的运行时信息等。 类的兼容、类的运行时信息等。
消息 消息
CTestApp
消息
CTestView
parent document
CMainFrame
CTestDoc
CTestApp类 3.2 CTestApp类 重要特性: 重要特性: (1)由MFC中的类CWinApp派生来。 MFC中的类CWinApp派生来。 中的类CWinApp派生来 (2)InitInstance() (3)ExitInstance() 主要功能: 主要功能: 文档模板。 (1)定义文档模板。 定义文档模板 (2)接收Windows系统的消息。 接收Windows系统的消息。 Windows系统的消息 (3)启动程序界面 在生成该程序新的实例时, 在生成该程序新的实例时,自动 在程序实例退出时,自动调用。 在程序实例退出时,自动调用。 调用完成一些初始化的工作。 调用完成一些初始化的工作。
常用的视图类: 常用的视图类: (1)CView类 CView类 (2)CScrollView (3)CFormView (4)CEditView 所有视图类的基类 带有滚动条的视图类 具有无模式对话框特点的类 可以进行文字输入的类
CChildFrame类 3.4 CChildFrame类 重要特性: 重要特性: (1)由MFC中的类CMDIChildWnd派生来。 MFC中的类CMDIChildWnd派生来。 中的类CMDIChildWnd派生来 (2)是CTestView的父窗口。 CTestView的父窗口。 的父窗口 3.5 小结 应用程序框架中类与文件的关系 文档/ 文档/视图框架的结构及其操作 4个类的主要功能
文档-视图之间的作用函数: 文档-视图之间的作用函数: CView类中GetDocument()函数 类中GetDocument() (1) CView类中GetDocument()函数 在视图中得到相应的文档。它返回文档的指针,通过 在视图中得到相应的文档。它返回文档的指针, 该指针就可以对文档类的成员函数及公共数据进行访问。 该指针就可以对文档类的成员函数及公共数据进行访问。
第3章 应用程序框架与文档 视 章 应用程序框架与文档/视 图结构
了解应用程序的基本框架以及文档/视图结构。 了解应用程序的基本框架以及文档/视图结构。
3.1 生成应用程序框架 如果程序名为Test,那么生成的框架将包含4个基本的类: 如果程序名为Test,那么生成的框架将包含4个基本的类: Test CMainFrame: 主框架类 CTestApp: 主应用程序类 CTestDoc: 文档类 CTestView: 视图类
COleLinkingDoc
MFC窗口类 4.4 MFC窗口类 窗口支持类: 窗口支持类:CWnd 框架窗口类 CFrameWnd CMDIFrameWnd CMDIChildWnd CMiniFrameWnd COleIPFrameWnd CMenu 框架窗口类的基类 MDI程序的框架窗口类 MDI程序的框架窗口类 MDI程序的子框架窗口类 MDI程序的子框架窗口类 所有窗口类的基类
CTestDoc类 CTestDoc类与文档 类与文档/ 3.3 CTestDoc类、CTestDoc类与文档/视图结构 重要特性: 重要特性: (1) CTestDoc由MFC中的类CDocument派生来----数据维护 CTestDoc由MFC中的类CDocument派生来----数据维护 中的类CDocument派生来---CTestView由MFC中的类CView派生来----数据显示 中的类CView派生来---(2) CTestView由MFC中的类CView派生来----数据显示 主要功能: 主要功能: (1)文档类负责管理和维护数据。 文档类负责管理和维护数据。 (2)视图类负责将文档类中的数据显示给用户,并接受用 视图类负责将文档类中的数据显示给用户, 户的修改,将修改结果反馈给文档类。 户的修改,将修改结果反馈给文档类。
MFC应用程序框架结构类 4.3 MFC应用程序框架结构类 文档类 Cdocument COleDocuent COleSeverDoc 文档模板类 CDocTemplate 文档模板的基类 多文档界面(MDI) 多文档界面(MDI)中的文档模板 单文档界面(SDI) 单文档界面(SDI)中的文档模板 CMultiDocTemplate CSingleDocTemplate 文档类的基类 封装了包容器支持的功能 支持嵌入对象的链接 是服务器应用文档类的基类
GetDocument()GetDocument()->UpdateAllViews(this);
(4) CView类中OnUpdate()函数 CView类中OnUpdate()函数 类中OnUpdate() 当应用程序调用了文档类的UpdateAllViews()函数时, 当应用程序调用了文档类的UpdateAllViews()函数时, UpdateAllViews()函数时 应用程序框架会相应的调用该函数。 应用程序框架会相应的调用该函数。
MFC应用程序框架结构类 4.3 MFC应用程序框架结构类 应用与线程支持类 CWinApp 类 CWinThread 类 命令发送类 CCmdTarget类 CCmdTarget类 CCmdUI类 CCmdUI类 封装了MFC消息映射机制, 封装了MFC消息映射机制,可以接受 MFC消息映射机制 用于更新用户接口对象的可编程界面 消息,并对消息作出响应。 消息,并对消息作出响应。 应用程序类 线程类
MFC窗口类 4.4 MFC窗口类 视图类 CScrollView CFormView CDaoRecordView CRecordView
CDocument类中常用函数: CDocument类中常用函数: 类中常用函数 CDocument类中OnNewDocument()函数 类中OnNewDocument() (1) CDocument类中OnNewDocument()函数 虚函数 虚函数 虚函数 虚函数 新文档被创建时调用。 新文档被创建时调用。 打开已有文档时调用。 打开已有文档时调用。 保存文档时调用。 保存文档时调用。 关闭文档时调用。 关闭文档时调用。 CDocument类中OnOpenDocument()函数 类中OnOpenDocument() (2) CDocument类中OnOpenDocument()函数 (3) CDocument类中OnSaveDocument()函数 CDocument类中OnSaveDocument()函数 类中OnSaveDocument() CDocument类中OnCloseDocument()函数 类中OnCloseDocument() (4) CDocument类中OnCloseDocument()函数