初识MFC----文档类CDocument

一、MFC的文档

  1、相关问题

    文档类 - 负责管理数据,封装了和视图窗口以及框架窗口之间的操作

    CDocument - 父类CCmdTarget

  2、文档类的使用

    2.1首先利用pFrame调用LoadFrame函数,创建主框架窗口

    2.2在主框架窗口WM_CREATE消息处理中创建视图窗口

    2.3在视图窗口WM_CREATE消息处理中将文档类对象和视图类对象建立绑定关系

    //文档类用一个链表成员保存和文档类对象相关联的视图类对象

    m_viewList.AddTail(pView);

    //视图类用一个普通成员保存和视图类对象相关联的文档类对象

    pView->m_pDocument = this;

    经分析可知:

    文档类用一个链表保存视图类对象:说明一个文档类对象可以和多个视图类对象关联(绑定)

    视图类用一个普通成员保存文档类对象:说明一个视图类对象只能和一个文档类对象关联(绑定)

  3、对象的关系图

    theApp

    |---->m_pMainWnd

         |---->m_pViewActive

            |---->m_pDocument

                 |---->m_viewList(保存视图类对象地址)

  4、文档类和视图类之间的操作

    4.1 CView::GetDocument() -可以获取和视图类相关联的文档类对象

    4.2 CView::OnUpdate -虚函数,刷新视图窗口

    4.3 CDocument::UpdateAllViews -可以触发所有和这个文档类对象相关联的视图类对象(视图窗口)刷新

  5、命令消息(WM_COMMAND)的处理顺序

    View->Document->Frame->App

二、文档类中文件相关功能

  程序的文档类中有一个OnNewDocument虚函数,该函数是【文件\新建】命令处理的一部分;

  1、修改单文档程序/多文档程序的程序窗口标题

    方法一:

      在程序的文档类中的虚函数OnNewDocument中添加:SetTitle("程序窗口的新标题");

    方法二:

      在程序的字串表资源中找到资源:IDR_MAINFRAME,该资源字符串是由“\0”分隔的7个子串;可利用文档模板类CDocTemplate的成员函数:GetDocString来获取各个子串:

      virtual BOOL GetDocString( CString& rString, enum DocStringIndex index ) const;

        rString:是一个CString对象的引用,当函数返回时,该参数将包含要查找的子串;

        index:枚举类型,指定将要查找的子串的索引,与IDR_MAINFRAME字符串资源中的7个子串的顺序一致,包括:

          CDocTemplate::windowTitle  --主窗口标题栏上的字符串,仅在单文档程序出现,多文档程序将以IDR_MAINFRAME字符串为默认值

          CDocTemplate::docName  --默认文档的名称,无指定时默认为“无标题”

          CDocTemplate::fileNewName  --文档类型的名称;如果程序指定支持多种类型的文档,此字符串将显示在“新建”文件对话框中

          CDocTemplate::filterName  --文档类型的描述和一个适用于此类型的通配符过滤器,这个字符串将出现在“打开”文件对话框中的文件类型列表框中,要和CDocTemplate::filterExt一起使用;

          CDocTemplate::filterExt  --文档的扩展名,如果没有指定就不能在“打开”文件对话框中处理这种文档,要和CDocTemplate::filterName一起使用

          CDocTemplate::regFileTypeId  --如果以::RegisterShellFileTypes向系统的注册表注册文件类型,此值会出现在HKEY_CLASSES_ROOT之下成为其子项,并仅供Windows内部使用;如果没有指定,这种文件类型就无法注册

          CDocTemplate::regFileTypeName  --这也是存储在注册表中的文件类型名称,会显示于程序中用以访问注册表的对话框内

时间: 2024-12-25 13:43:39

初识MFC----文档类CDocument的相关文章

MFC框架类、文档类、视图类相互访问的方法

1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFrame* pMainFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd); 或者 CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd(); 3.获取菜单指针 CMenu* pMenu = AfxGetMain

C++MFC编程笔记day05 文档类-单文档和多文档应用程序

文档类 1 相关类 CDocument类-父类是CCmdTarget类,所以,文档类也可以处理菜单等 命令消息.作用保存和管理数据. 注意事项:如何解决断言错误 2 在视图中显示文档中的数据 2.1 CView::OnInitialUpdate 作用初始化视图,在附加文档之后,显示之前,由框架调用. 2.2 CView::GetDocument 获取与视图相关的文档 2.3 CFrameWnd::InitialUpdateFrame 作用,初始化更新框架,可以引起CView::OnInitial

理解MFC 文档、视图、框架[转]

理解文档/视图框架                                      出处.雷神 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往往被局限于在用向导生成的框架中.本文希望能够尽可能说明白文档视图框架之间是如何进行作用,希望能给一些朋友带来小小的帮助.     几个概念:     (虽然大家都知道了,雷神还是要重申一次)     文档对象:是用来保存数据的.     视图对象

MFC 文档/视图

1.文档修改后,关闭时需要保存,主要用到2个函数,在需要更改文档内容的函数里调用SetModifiedFlag(TRUE),另一个就是SaveModified()函数,简单的例子: BOOL CMFC_Doc::SaveModified() { // TODO: 在此添加专用代码和/或调用基类 return CDocument::SaveModified(); } void CMFC_Doc::SetColor() { m_color=RGB(0,0,0); SetModifiedFlag(TR

MFC文档、视图和框架

文档.视图.框架 文档/视图结构是MFC提供的一种不错的设计,它将数据的处理和显示分开来,这样更便于我们对程序的维护和扩展. 文档 文档对象用于管理和维护数据,包括保存数据.取出数据以及修改数据等操作,在数据被修改以后,文档可以通知其对应的所有视图更新显示. 文档类继承于CDocument类,主要成员函数: virtual BOOL OnNewDocument( ); 创建新文档.可以重载使用. virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

flex 与 加载的swf传参,获取文档类

public function setPicData(parmProductNameId:int):void{ trace("swf里面的方法setFlipBookData被调用,接收的参数图片数组::" + parmProductNameId); productNameId = parmProductNameId; return; }// end function 1.swf 的文档类里面,写好flex 调用的接口方法: 2. flex加载swf 文件. 获取到swf的文档类,直接调

MFC 文档view视图中根据鼠标指定的某个区域控制延迟显示tip的方法(原创)

前言 在处理文档视图中,有时候需要根据鼠标指定的位置显示相应的提示信息,对于软件功能优化设计,此功能很有必要. 一. 一般处理方法 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法.一般用法步骤: 1.添加CToolTipCtrl成员变量 m_ToolTip. 2.在父窗口中调用EnableToolTips(TRUE); 3.在窗口的OnCreate(或者其他适当的位置)中向ToolTip中

27.初识分布式文档存储系统慨念

主要知识点: 初识distributed document store 一.distributed document store(分布式文档存储系统) Elasticsearch在运行起来以后,他的第一个最核心的功能就是一个分布式的文档数据存储系统.主要有以下三个慨念: 分布式的:es可以实现分布式,可以很方便的扩容. 文档数据:es可以存储和操作json文档类型的数据,而且这也是es的核心数据结构. 存储系统:es可以对json文档类型的数据进行存储,查询,创建,更新,删除等操作.满足了这些功

Swagger-UI 基于REST的API测试/文档类插件

现在多数的项目开发中,网站和移动端都需要进行数据交互和对接,这少不了使用REST编写API接口这种场景.例如我目前的工作,移动端交由了另一团队开发,不同开发小组之间就需要以规范和文档作为标准和协作基础.良好的文档可以让开发事半功倍,而作为又懒又要效率又能交代的码农,当然最希望一切自动化,或用小聪明来找到最适合的工具. Swagger-UI简单而一目了然.它能够纯碎的基于html+javascript实现,只要稍微整合一下便能成为方便的API在线测试工具.项目的设计架构中一直提倡使用TDD(测试驱