`
starnc
  • 浏览: 145049 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

MFC中文档和视图的关系

    博客分类:
  • VC++
 
阅读更多

在MFC中M$引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口。(这一结构在MFC中的OLE,ODBC开发时又得到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类。(VC6中支持创建不带文档-视的应用)   

在程序运行时CWinApp将创建一个CFrameWnd框架窗口实例,而框架窗口将创建文档模板,然后有文档模板创建文档实例和视实例,并将两者关联。一般来讲我们只需对文档和视进行操作,框架的各种行为已经被MFC安排好了而不需人为干预,这也是M$设计文档-视结构的本意,让我们将注意力放在完成任务上而从界面编写中解放出来。   

在应用中一个视对应一个文档,但一个文档可以包含多个视。一个应用中只用一个框架窗口,对多文档界面来讲可能有多个MDI子窗口。每一个视都是一个子窗口,在单文档界面中父窗口即是框架窗口,在多文档界面中父窗口为MDI子窗口。一个多文档应用中可以包含多个文档模板,一个模板定义了一个文档和一个或多个视之间的对应关系。同一个文档可以属于多个模板,但一个模板中只允许定义一个文档。同样一个视也可以属于多个文档模板。(不知道我说清楚没有)   

接下来看看如何在程序中得到各种对象的指针:   
全局函数AfxGetApp可以得到CWinApp应用类指针   
AfxGetApp()-> m_pMainWnd为框架窗口指针   
在框架窗口中:CFrameWnd::GetActiveDocument得到当前活动文档指针   
在框架窗口中:CFrameWnd::GetActiveView得到当前活动视指针   
在视中:CView::GetDocument得到对应的文档指针   
在文档中:CDocument::GetFirstViewPosition,CDocument::GetNextView用来遍历所有和文档关联的视。   
在文档中:CDocument::GetDocTemplate得到文档模板指针   
在多文档界面中:CMDIFrameWnd::MDIGetActive得到当前活动的MDI子窗口   


一般来讲用户输入消息(如菜单选择,鼠标,键盘等)会先发往视,如果视未处理则会发往框架窗口。所以定义消息映射时定义在视中就可以了,如果一个应用同时拥有多个视而当前活动视没有对消息进行处理则消息会发往框架窗口。   

分享到:
评论

相关推荐

    MFC中文档和视图的关系.rar .

    MFC文档和视图的关系是面向对象编程的一个实例,它将数据(文档)与显示数据的方式(视图)分离,从而实现数据和界面的解耦,提供更灵活的开发框架。 1. **文档类(CDocument)**:在MFC中,文档类是C++类,通常...

    MFC多文档多视图编程

    MFC中文档/视图结构涉及到的主要类包括: - **CWinApp**: 应用程序对象,它是整个应用程序的核心。`CWinApp`对象管理着应用程序的所有方面,包括初始化、资源管理等。 - **CDocTemplate**: 文档模板对象,它负责...

    MFC单文档多视图模板类

    3. **模板类(Document/View Templates)**:模板类是MFC中用来管理SDI应用中文档和视图创建的关键组件。`CDocTemplate`是基础类,负责创建、打开、保存和关闭文档以及与之关联的框架窗口和视图。MFC提供了几种预定...

    MFC官方开发手册

    - **文档、视图和框架**:解释了MFC中文档、视图以及它们与框架之间关系的核心概念,这是MFC应用程序架构的核心组成部分。 - **向导和资源编辑器**:向导工具可以帮助快速创建项目模板,而资源编辑器则可以方便地...

    鸡啄米VS2010/MFC入门教程 (带书签).pdf

    这部分内容探讨了MFC中文档、视图和框架的概念以及它们之间的相互关系,包括分割窗口的实现。文档通常保存数据,视图负责显示,框架则是整个程序的主体结构。 **MFC常用类**: 教程中还讲解了MFC中一些常用类的使用...

    VS2010之MFC入门到精通教程

    8. 文档、视图和框架:介绍MFC中文档、视图和框架对象之间的关系,以及如何实现分割窗口。 9. MFC常用类:讲解CString类、CTime类和CTimeSpan类,以及定时器、CFile文件操作类和异常处理的方法。 10. 字体和文本...

    VS2010之MFC入门到精通

    - 概述了MFC中文档、视图和框架对象之间的关系,以及如何操作它们。 - 讲解了分割窗口的创建和使用,这是多文档界面(MDI)程序中常见的布局方式。 第七部分:MFC常用类 - 介绍了MFC中的一些常用类,比如CString类...

    Visual_C++MFC入门教程.pdf

    - 阐述MFC中文档/视图架构的工作原理,包括文档、视图和框架窗口之间的消息传递机制。 - **3.2 接收用户输入** - 讲解如何处理来自用户的键盘、鼠标等输入事件,并将这些事件转换成应用程序可以理解的操作。 - *...

    鸡啄米大侠的MFC入门教程

    - 文档、视图和框架的概念:理解MFC中文档管理、视图展示以及框架窗口的基本概念和它们之间的交互。 - 分割窗口:学习如何使用分割窗口(如CSplitterWnd)来组织界面布局。 7. MFC常用类的了解: - CString类:...

    Visual C++MFC编程实例(电子书 + 源码)

    3. **文档/视图结构**:解释MFC中文档(Document)、视图(View)和框架窗口(Frame Window)的关系,以及如何在它们之间传递数据。 4. **视图绘制**:探讨如何使用OnDraw函数进行图形绘制,包括基本绘图操作和高级...

    MFC编程实例

    4. 文档/视图结构:MFC中文档/视图模式是分离数据和显示的一种设计模式。文档类管理应用程序数据,视图类用于显示和编辑数据。文档类通常派生自CDocument,视图类派生自CView。应用程序通常有一个或多个文档模板对象...

    VC++ MFC入门教程

    描述MFC中文档、视图和框架窗口之间的关系,以及它们是如何协同工作的。 #### 3.5 利用序列化进行文件读写 解释如何在MFC中使用序列化机制进行文件的读取和保存操作。 #### 3.6 MFC中所提供的各种视类介绍 介绍...

    深入浅出MFC 2e

    - **软硬件环境**:书中使用的开发工具为Visual C++ 5.0 和 MFC 4.2,同时也适用于Visual C++ 6.0 和 MFC 4.21。 #### 第一篇:勿在浮砂筑高台 - **第1章 Win32程序基本概念** - **Win32程序开发流程**:介绍创建...

    VC++MFC入门教程

    - **文档-视图架构**:概述了MFC中文档-视图架构的工作原理及各个组件之间的关系。 - **消息传递机制**:描述了文档、视图、框架窗口之间的消息交互规则。 - **3.2 接收用户输入** - **用户交互**:讨论了如何...

    VS2010入门教程.pdf

    这部分介绍了MFC应用程序中文档、视图和框架的概念和它们之间的关系。文档代表了应用程序的数据,视图则负责文档数据的显示,而框架则提供了用户界面和消息处理的环境。分割窗口的概念也在这一部分进行了介绍,分割...

    VC编程初级用户

    - **文档、视图和框架:概述**:这部分概述了MFC应用程序中文档、视图和框架的概念及其相互关系。 - **文档、视图和框架:各对象之间的关系**:这部分深入探讨了文档对象、视图对象和框架对象之间如何协作。 - **...

    FMCK.rar_组合框控件_C/C++_

    标题中的"FMCK.rar_组合框控件_C/C++_"表明这是一个关于C/C++编程的资源包,重点在于“组合框控件”。...同时,它也展示了MFC中文档/视图架构的实现,这对于熟悉和掌握Windows桌面应用开发是非常有价值的。

    Ex_Scale.rar_scale

    `Ex_ScaleDoc.cpp`可能包含了文档类的实现,虽然在本问题中文档类可能不是关键,但理解整个MFC应用的架构是必要的。 `StdAfx.cpp`和`StdAfx.h`包含预编译头文件,它们用于提高编译速度,通常包含了经常使用的库和宏...

Global site tag (gtag.js) - Google Analytics