精华内容
下载资源
问答
  • 深入浅出MFC文档/视图架构之基本概念 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=276 深入浅出MFC文档/视图架构之文档模板 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=275 深入浅出MFC...


    原创地址:

    深入浅出MFC文档/视图架构之基本概念 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=276
    深入浅出MFC文档/视图架构之文档模板 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=275
    深入浅出MFC文档/视图架构之文档 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=272
    深入浅出MFC文档/视图架构之视图 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=273
    深入浅出MFC文档/视图架构之框架 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=272
    深入浅出MFC文档/视图架构之相互关系 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=271
    深入浅出MFC文档/视图架构之实例剖析
    http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=270



    教程:轻松玩转MFC文档视图架构编程
    ·天极开发者网络倾情奉献:dev.yesky.com
    ·策划:方舟 DEL:023-86583043

    “文档/视图”结构是MFC中结构最为复杂,体系最为庞大,而又最富有特色的部分,其中涉及到应用、文档模板、文档、视图、SDI窗口、MDI框架窗口、MDI子窗口等多种不同的类,如果不了解这些类及其盘根错节的内部联系的话,就不可能编写出高水平的文档/视图程序。

      学习"文档/视图"结构的意义还不只于其本身,通过该架构的学习,一步步领略MFC设计者的神功奥妙,也将进一步增强我们自身对庞大程序框架的把握能力。

      一个优秀的程序员是可以写出一个个优秀函数的程序员,而一个优秀的系统设计师则需从全局把握软件的架构,分析和学习"文档/视图"结构将是我们成为软件系统设计师之旅的一个重要阶段。

    ·理解了MFC文档视图类的意义及它们纵横交错的关系也就理解了“文档/视图”结构的基本概念,在此基础上,我们再进一步研究“文档/视图”结构的MFC程序消息流动的方向,这样就完全彻底明白了基于"文档/视图"结构MFC程序的“生死因果”。
    ·您可以通过EMail联系讲座作者,作者EMail:21cnbao@21cn.com。

    【快速入门】

    1、深入浅出MFC文档/视图架构之基本概念

     引言

      MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要涉及到四种类:

      (1)文档模板:

    class CDocTemplate; // template for document creation
    class CSingleDocTemplate; // SDI support
    class CMultiDocTemplate; // MDI support

      (2)文档:

    class CDocument; // main document abstraction

      (3)视图:

    // views on a document
    class CView; // a view on a document
    class CScrollView; // a scrolling view

      (4)框架窗口:

    // frame windows
    class CFrameWnd; // standard SDI frame
    class CMDIFrameWnd; // standard MDI frame
    class CMDIChildWnd; // standard MDI child
    class CMiniFrameWnd; // half-height caption frame wnd

      理解了这4个类各自的意义及它们纵横交错的关系也就理解了"文档/视图"结构的基本概念,在此基础上,我们还需要进一步研究"文档/视图"结构的MFC程序消息流动的方向,这样就完全彻底明白了基于"文档/视图"结构MFC程序的"生死因果"。

      出于以上考虑,本文这样组织了各次连载的内容:

      第1次连载进行基本概念的介绍,第2~5次连载分别讲述文档模板、文档、视图和框架窗口四个类的功能和主要函数,连载6则综合阐述四个类之间的关系,接着以连载7讲解消息流动的方向,最后的连载8则以实例剖析连载1~7所讲述的所有内容。

      本文所有的代码基于WIN32平台开发,调试环境为Visual C++6.0。在本文的连载过程中,您可以通过如下方式联系作者(热忱欢迎读者朋友对本文的内容提出质疑或给出修改意见):

      作者email:21cnbao@21cn.com(可以来信提问,笔者将力求予以回信解答);

      另外,对本文的转载请务必注明作者和出处。未经同意,不得用于任何形式的商业目的。

      
    架构

      MFC"文档/视图"结构被认为是一种架构,关于什么是架构,这是个"仁者见仁,智者见智"的问题。在笔者看来,成其为架构者,必具备如下两个特性:

      (1)它是一种基础性平台,是一个模型。通过这个平台、这个模型,我们在上面进一步修饰,可以得到无穷无尽的新事物。譬如,建筑学上的钢筋混凝土结构、ISO(国际标准化组织)的OSI(开放式系统互连)七层模型。架构只是一种基础性平台,不同于用这个架构造出的实例。钢筋混凝土结构是架构,而用钢筋混凝土结构造出的房子就不能称为架构。

      这个特性强调了架构的外部特征,即架构具有可学习、可再生、可实例化的特点,是所有基于该架构所构造实例的共性,是贯串在它们体内的一根"筋",但各个基于该架构所构造的实例彼此是存在差异的。

      (2)它是一个由内部有联系的事物所组成的一个有机整体。架构中的内部成员不是彼此松散的,并非各自"占山为王",它们歃血为盟,紧密合作,彼此都有明确的责任和分工,因此共同构筑了一个统一的基础性平台、一个统一的模型。譬如,OSI模型从物理层到应用层进行了良好的合作,虽然内部包含了复杂的多个层次,但仍然脉络清晰。

      由此可见,架构的第2个特性是服务于第1个特性的。理解架构,关键是理解以上两个特性。而针对特定的"文档/视图"结构,则需理解如下两个问题:

      (1)学习这个架构,并学会在这个架构上造房子(编写基于"文档/视图"结构的程序);

      (2)理解这个架构内部的工作机理(文档模板、文档、视图和框架窗口四个类是如何联系为一个有机整体的),并在造房子时加以灵活应用(重载相关的类)。

      在这里,我们再引用几位专家(或企业)关于架构的定义以供读者进一步参考:

    The key ideas of a commercial application framework : a generic app on steroids that provides a large amount of general-purpose functionality within a well-planned, welltested, cohesive structure.
    (Application framework is) an extended collection of classes that cooperate to support a complete application architecture or application model, providing more complete application development support than a simple set of class libraries.
    ――MacApp(Apple's C++ application framework)
    An application framework is an integrated object-oriented software system that offers all the application-level classes(documents, views, and commands)needed by a generic application.
    An application framework is meant to be used in its entirety, and fosters both design reuse and code reuse. An application framework embodies a particular philosophy for structuring an application, and in return for a large mass of prebuilt functionality, the programmer gives up control over many architectural-design decisions.
    ――Ray Valdes


      
    什么是Application Framework?Framework 这个字眼有组织、框架、体制的意思,Application Framework 不仅是一般性的泛称,它其实还是对象导向领域中的一个专有名词。

      基本上你可以说,Application Framework 是一个完整的程序模型,具备标准应用软件所需的一切基本功能,像是档案存取、打印预视、数据交换...,以及这些功能的使用接口(工具列、状态列、选单、对话盒)。如果更以术语来说,Application Framework 就是由一整组合作无间的"对象"架构起来的大模型。喔不不,当它还没有与你的程序产生火花的时候,它还只是有形无体,应该说是一组合作无间的"类别"架构起来的大模型。

      ――侯捷


      最后,要强调的是,笔者之所以用一个较长的篇幅来连载关于"文档/视图"结构的内容,是因为"文档/视图"结构是MFC中结构最为复杂,体系最为庞大,而又最富有特色的部分,其中涉及到应用、文档模板、文档、视图、SDI窗口、MDI框架窗口、MDI子窗口等多种不同的类,如果不了解这些类及其盘根错节的内部联系的话,就不可能编写出高水平的文档/视图程序。当然,学习"文档/视图"结构的意义还不只于其本身,通过该架构的学习,一步步领略MFC设计者的神功奥妙,也将进一步增强我们自身对庞大程序框架的把握能力。一个优秀的程序员是可以写出一个个优秀函数的程序员,而一个优秀的系统设计师则需从全局把握软件的架构,分析和学习"文档/视图"结构相信将是我们成为系统设计师之旅的一个有利环节。

     

     

    展开全文
  • MFC文档视图类的基本功能和二者基本关系.pdf
  • VC/MFC文档-视图-框架体系编程实例

    热门讨论 2009-12-07 20:04:20
    给出了关于VC/MFC文档-视图-框架体系的编程实例,详细介绍了VC/MFC文档编程,视图编程,窗口静态切分和动态切分,多文档和单文档程序设计,包含了(30个实例),资源的实例均从光盘中拷出来的,能够正常运行
  • MFC编程常用到文档/视图结构,它可以将程序的数据层和界面层分开,主要包含五个基本:CWinApp,CDocTemplate,CFrameWnd,CDoc,CView 1、 CWinApp:管理整个应用程序 部分成员变量: CDocManager* m_pDocManager;/...

    MFC编程常用到文档/视图结构,它可以将程序的数据层和界面层分开,主要包含五个基本类:CWinApp,CDocTemplate,CFrameWnd,CDoc,CView

    1、 CWinApp类:管理整个应用程序

    • 部分成员变量:
     CDocManager* m_pDocManager;// 文档/视图管理器指针
     LPCSTR m_pszAppName;// 应用程序名称   
     HINSTANCE m_hInstance;// 实例的句柄   
     m_pMainWnd; // 为框架窗口指针  
    • 部分成员函数
     InitInstance(); // 初始化   
     void AddDocTemplate(CDocTemplate* pDoc);// 将pDoc加入模板链表
     POSITION GetFirstDocTemplatePosition() const;// 获得第一个文档模板的 POSITION类型的位置
     CDocTemplate* GetNextDocTemplate(POSITION& pos) const;// 获得pos位置的文档模板,并将下一个模板的POSITOON位置传给pos;  
     GetActiveDocument(); // 得到当前活动文档指针 
     GetActiveView(); // 得到当前活动视图指针   
     SetActiveView(); // 设置当前视图为活动视图 

    2、 CDocTemplate类

    //常用派生类CSingleDocTemplate类和CMultiDocTemplate类
    void CloseAllDocuments(BOOL);
    CDocument* OpenDocmentFile(LPCSTR, BOOL)

    3、 CFrameWnd类:主窗口框架,管理文档和视图,

    void ActivateFrame(int);// 
    

    4、 CDoc类:保存管理数据

     // 对文档的操作   
     BOOL OnNewDocument();
     BOOL OnOpenDocument(LPCSTR lpszPathName);
     BOOL OnSaveDocument(LPCSTR lpszPathName);
     void OnCloseDocument();
    
     // 对文档关联的视图操作  
     POSITION GetFirstViewPosition() const;// 文档对象链表中的第一个文档位置   
     CView* GetNextView(POSITION&) const;// 得到下一个视图
     GetDocTemplate();// 得到文档模板指针   
     void AddView(CView*);
     void RemoveView(CView*);
     void UpdateAllView(CView*);

    5、CView类:显示编辑数据。

    CDocument* GetDocument() const;// 得到对应的文档指针 
    CFrameWnd* GetParentFrame() const;// 得到框架指针
    • 创建文档/视图框架结构程序时,MFC自动在初始化时创建其他几个类
    BOOL   CMyApp::InitInstance()   
     {   
     CSingleDocTemplate*   pDocTemplate; // CSingleDocTemplate模板类
      pDocTemplate   =   new   CSingleDocTemplate(   
      IDR_MAINFRAME,   
      RUNTIME_CLASS(CMyDoc),   // CDoc类
      RUNTIME_CLASS(CMainFrame),  //  CFrameWnd类
      RUNTIME_CLASS(CMyView));  //  CView类
      AddDocTemplate(pDocTemplate);  //存入m_templateList链表
      } 

    6、[转] 框架、文档、视图类之间的调用关系

    1、主框架(CFrameWnd)中访问视图(CView)
    CView* GetActiveView() const;
    通常定义的视图为CView的派生类,在调用自定义视图对象的方法时应该这样写:((CMouseKeyView*)GetActiveView())->MyFunc();

    2、主框架(CFrameWnd)中访问文档(CDocument)
    GetActiveDocument,返回CDocument对象;

    3、在视图(CView)中访问文档(CDocument)
    inline CMouseKeyDoc* CMouseKeyView::GetDocument()
    {return (CMouseKeyDoc*)m_pDocument;}

    4、在视图(CView)中访问框架(CFrameWnd)
    CFrameWnd* GetParentFrame() const;

    5、在文档(CDocument)中访问框架(CFrameWnd)
    CWnd* AfxGetMainWnd();
    CWnd* AfxGetApp()->m_pMainWnd;

    6、在文档(CDocument)中访问视图(CView)
    void UpdateAllViews(
    CView* pSender, // 要更新的视图指针,NULL更新所有
    LPARAM lHint=0L, // 包含更改消息的通知
    CObject* pHint=NULL // 保管更改消息的对象
    }

    7、在其他类中访问文档类(CDocument)
    CDocument* GetDocument()
    {
    CFrameWnd* frm=(CFrameWnd*)::AfxGetMainWnd();
    ASSERT(frm);
    CDocument* pDoc=frm->GetActiveDocument();
    ASSERT(pDoc);
    ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CMouseKeyDoc)));
    return (CMouseKeyDoc*)pDoc;
    }

    7、消息

    通常我们的操作都是通过视图窗口完成,消息由视图进行接收并且进行处理。所以消息映射定义一般在视图中。但如果一个应用同时拥有多个视图而当前活动视图没有对消息进行处理则消息会发往框架窗口。另外框架窗口可以方便的处理非窗口消息,故菜单消息相应函数顺序是:CView>>CDoc>>CMainFrame>>CApp。

    展开全文
  • MFC 框架初始化文档视图;您初始化向文档视图添加的任何数据。框架在文档视图关闭时进行清理;您必须解除分配从这些文档视图的成员函数中在堆上分配的任何内存。 注意 请记住,整个应用程序的

    转自https://msdn.microsoft.com/zh-cn/library/cc485606%28v=vs.71%29.aspx

    使用下列原则初始化文档和视图并对其进行事后清理:

    • MFC 框架初始化文档和视图;您初始化向文档和视图添加的任何数据。
    • 框架在文档和视图关闭时进行清理;您必须解除分配从这些文档和视图的成员函数中在堆上分配的任何内存。
      注意   请记住,整个应用程序的初始化最好通过重写 CWinApp 类的 InitInstance 成员函数来完成;整个应用程序的清理最好通过重写 CWinApp 的成员函数 ExitInstance 来完成。

    MDI 应用程序中的文档(以及文档的框架窗口和一个或多个视图)的生命周期如下:

    1. 在动态创建期间,调用文档构造函数。
    2. 对于每个新文档,调用文档的 OnNewDocument OnOpenDocument
    3. 用户在文档的整个生存期内与文档进行交互。这通常在用户通过视图对文档数据进行操作(选择和编辑数据)时发生。视图将更改传递给文档以存储更改并更新其他视图。在此期间,文档和视图都可能处理命令。
    4. 框架调用 DeleteContents 以删除文档特定的数据。
    5. 调用文档的析构函数。

    在 SDI 应用程序中,当第一次创建文档时只执行一次第一步。然后每次打开新文档时都重复执行第二步到第四步。新文档重复使用现有的文档对象。最后,当应用程序结束时执行第五步。

    展开全文
  • C++ MFC文档视图结构

    2019-09-05 20:48:57
    第二节介绍了文档视图的关系,两者是一个一对多的映射。一个文档可以对应多个视图,而一个视图只能对应一个文档。举个例子,一个*.html文件,可以用记事本打开,也可以用浏览器打开。这里*.html文件就是文档,...

    第二节介绍了文档、视图的关系,两者是一个一对多的映射。一个文档可以对应多个视图,而一个视图只能对应一个文档。举个例子,一个*.html文件,可以用记事本打开,也可以用浏览器打开。这里*.html文件就是文档,记事本和浏览器就是这个文档的两个视图。

    文档和视图结构的优势就在于数据的管理与显示分离,数据总是要以一定的结构来存储,而视图负责数据的呈现。数据往往有多种呈现方式,例如一份报表,可以用表格的形式呈现,也可以用图表的形式呈现。根据不同的需求以不同的形式呈现,这就是视图的特性。

    在使用文档/视图体系开发应用程序过程中,涉及的不仅仅是文档与视图。总体来说,涉及4个部分:文档模板、文档、视图和框架窗口。

    下面以VC2010创建多文档应用程序为例来介绍文档/视图结构,项目名称为MDITest。首先来看看应用程序的初始化过程:

    // CMDITestApp 初始化
    BOOL CMDITestApp::InitInstance()
    {
        // 如果一个运行在 Windows XP 上的应用程序清单指定要使用
        //ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
        //则需要 InitCommonControlsEx()。否则,将无法创建窗口。
        INITCOMMONCONTROLSEX InitCtrls;
        InitCtrls.dwSize = sizeof(InitCtrls);
        // 将它设置为包括所有要在应用程序中使用的公共控件类
        InitCtrls.dwICC = ICC_WIN95_CLASSES;
        InitCommonControlsEx(&InitCtrls);
        CWinAppEx::InitInstance();
        // 初始化 OLE 库
        if (!AfxOleInit())
        {
            AfxMessageBox(IDP_OLE_INIT_FAILED);
            return FALSE;
        }
    
        AfxEnableControlContainer();
    
        EnableTaskbarInteraction();
    
        // 使用 RichEdit 控件需要  AfxInitRichEdit2()   
        // AfxInitRichEdit2();
        // 标准初始化
        // 如果未使用这些功能并希望减小
        // 最终可执行文件的大小,则应移除下列
        // 不需要的特定初始化例程
        // 更改用于存储设置的注册表项
        // TODO: 应适当修改该字符串,
        // 例如修改为公司或组织名
        SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
        LoadStdProfileSettings(4);  // 加载标准 INI 文件选项(包括 MRU)
        InitContextMenuManager();
        InitKeyboardManager();
        InitTooltipManager();
        CMFCToolTipInfo ttParams;
        ttParams.m_bVislManagerTheme = TRUE;
        theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL,
            RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);
    
        // 注册应用程序的文档模板。文档模板
        // 将用作文档、框架窗口和视图之间的连接
        CMultiDocTemplate* pDocTemplate;
        pDocTemplate = new CMultiDocTemplate(IDR_MDITestTYPE,
            RUNTIME_CLASS(CMDITestDoc),
            RUNTIME_CLASS(CChildFrame), // 自定义 MDI 子框架
            RUNTIME_CLASS(CMDITestView));
        if (!pDocTemplate)
            return FALSE;
        AddDocTemplate(pDocTemplate);
    
        // 创建主 MDI 框架窗口
        CMainFrame* pMainFrame = new CMainFrame;
        if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
        {
            delete pMainFrame;
            return FALSE;
        }
        m_pMainWnd = pMainFrame;
        // 仅当具有后缀时才调用 DragAcceptFiles
        //  在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生
    
        // 分析标准 shell 命令、DDE、打开文件操作的命令行
        CCommandLineInfo cmdInfo;
        ParseCommandLine(cmdInfo);
        // 调度在命令行中指定的命令。如果
        // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
        if (!ProcessShellCommand(cmdInfo))
            return FALSE;
        // 主窗口已初始化,因此显示它并对其进行更新
        pMainFrame->ShowWindow(m_nCmdShow);
        pMainFrame->UpdateWindow();
    
        return TRUE;
    }

    在这个初始化过程中,首先创建CMultiDocTemplate类型的多文档模块,并使用AddDocTemplate把多文档模板对象添加到文档模板管理器。然后创建CMainFrame类型的框架窗口,最后显示并更新框架窗口。通过文档模板抽象基类CDocTemplate,把框架窗口、文档与视图三者关联起来。对于单文档应用程序,需要使用单文档模板类CSingleDocTemplate,而对于多文档应用程序,需要使用多文档模板类CMultiDocTemplate。

    文档模板之所以有能够与文档、视图和框架窗口三者相关联,是因为文档模板类CDocTemplate中定义了文档、视图和框架窗口的CRuntimeClass对象指针。而这三个CRuntimeClass对象的初始化恰好在文档模板的构造函数中实现。学习的过程中,需要慢慢体会这种设计的巧妙。

    文档派生于CDocument类,负责存储应用程序的数据,并把这些数据提供给其他部分,可以在源码中查看CDocument类定义。

    一个文档可以与多个视图关联,每一个视图仅仅是与其相关联文档数据的一种表现形式,在CDocument类中定义了一个CPtrList类型的变量m_viewList,用于维护与当前文档对象相关联的视图链表。使用成员函数AddView可以添加视图,使用成员函数RemoveView可以删除视图。

    小经验:MFC中系统封装了大量的类,对于初学者,在学习的时候不妨多动手,尝试着调用一下这些方法,运行并查看结果,这对于理解这些类很有帮助。

    MFC的CView类是所有视图类的基类,主要有两大功能:

    • 将与其相关联文档的数据呈现给用户。
    • 接受用户对数据的修改,并反馈给文档。


    在CView类中定义了一个文档对象指针m_pDocument,在应用程序中可以使用CView的成员函数GetDocument获取与特定视图对象相关联的文档对象。

    当视图中的数据被修改后,除了需要通知文档修改数据外,还需要使用CDocument类的成员函数UpdateAllViews通知所有与该文档相关联的视图更新显示数据。

    在文档/视图结构中,文档负责数据的管理,视图负责数据的显示,框架窗口则负责管理这些界面。框架窗口有两种模式:单文档窗口SDI和多文档窗口MDI。在SDI环境下,同时最多只能一个框架窗口;而在MDI环境下则没有这个限制。

    展开全文
  • MFC框架类、文档类视图类相互访问的方法
  • 视图类CView MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的数据...
  • MFC中,文档类的基本功能是负责管理数据;视图类的基本功能是显示数据; 二者的基本关系是,视图类有一个文档指针m_pDocument ; 使用VC6新建一个单文档工程;生成的类中,xxxDoc这个是文档类,xxxView这个是视图...
  • 深入浅出MFC文档/视图架构之视图

    千次阅读 2008-06-11 11:05:00
    视图类CView 在MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的...
  • 深入浅出MFC文档/视图架构之基本概念 引言  MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要涉及到四种类:  (1)文档模板: ...
  • 摘要:VC/C++源码,界面编程,MFC,文档视图 MFC文档视图程序    1 MFC文档视图的各个部分 ... 1.3 CView 视图类,提供了数据的显示  以及和用户交互操作。  1.4 CDocument 文档类,提供数据的维  
  • MFC文档视图、框架的建立 文档将描述MFC框架程序中WinApp , Document Templates, Document, View , Frame创建和所有关系。 CWinApp 在一个系统程序中只有一个CWinApp对象,该对象会被静态的创建并在MFC框架...
  • 视图类CView 在MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的...
  • 2、CDocTemplate是一个对框架类、视图类文档类进行关联。通过文档模版,可以确定创建或者打开一个文档时,用什么框架和视图进行管理。 3、CDocManager进行管理CDocTemplate。 细节: 1、CWnd不代表一个窗口,...
  • MFC文档/视图结构体系及SDI回顾(1)

    千次阅读 2016-10-17 21:29:10
    1.文档/视图历史小传 在MFC早期,应用程序的体系结构是相当的粗浅。...通过引入文档视图体系结构,可以这样讲,MFC2.0基本上变革了windows应用程序编制的方式。在文档视图应用程序中,应用程序的数据由文档对象代
  • 深入浅出MFC文档/视图架构之文档

    千次阅读 2008-06-11 11:00:00
    1、文档类CDocument 在"文档/视图"架构的MFC程序中,文档是一个CDocument派生对象,它负责存储应用程序的数据,并把这些信息提供给应用程序的其余部分。CDocument类对文档的建立及归档提供支持并提供了应用程序用于...
  • MFC文档视图结构

    千次阅读 2018-04-01 15:19:23
    文档/视图概述为了统一和简化数据处理方法,Microsoft公司在MFC中提出了文档/视图结构的概念,其产品Word就是典型的文档/视图结构应用程序MFC通过其文档类视图类提供了大量有关数据处理的方法分为数据的管理和显示...
  • 文档模板管理者CDocManager 在"文档/视图"架构的MFC程序中,提供了文档模板管理者CDocManager,由它管理应用程序所包含的文档模板。我们先看看这个的声明: class CPtrList : public CObject{ DECLARE_...
  • 说明CDocument, CView, CFrameWnd, CWinApp, CDocTemplate 这五个框架MFC文档/视图结构程序中各自扮演   1 CWinApp拥有一个对象指针:CDocManager* m_pDocManager 2 CDocManager拥有一个指针链表CPtrList...
  • (这一结构在MFC中的OLE,ODBC开发时又得到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类。 在程序运行时CWinApp将创建一个CFrameWnd框架窗口...
  • 视图类CView 在MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的...
  • MFC文档 视图 框架

    2011-08-22 17:00:12
    MFC文档视图、框架的建立 文档将描述MFC框架程序中WinApp , Document Templates, Document, View , Frame创建和所有关系。 CWinApp 在一个系统程序中只有一个CWinApp对象,该对象会被静态的创建并在MFC框架
  • 深入浅出MFC文档/视图架构之相互关系2006-03-21 14:20作者:宋宝华出处:天极开发责任编辑:方舟 1、模板、文档、视图、框架的关系 连载1~5我们各个击破地讲解了文档、文档模板、视图和框架,连载1已经强调这些...
  • 理解MFC文档/视图框架 by 雷神

    千次阅读 2006-12-14 16:32:00
    了解文档视图的相互作用关系是编写MFC程序的基本功。但是MFC的应用程序框架把文档视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往往被局限于在用向导生成的框架中。本文希望能给一些朋友带来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,279
精华内容 5,311
关键字:

mfc文档类视图类