zoukankan      html  css  js  c++  java
  • MFC Document/View 2

    1.概述

    Document/View是集成在Viaual C++中基于MFC的一个框架。实现对数据的操作显示。

    主要包含三部分:

    CFrameWnd(框架窗口):所谓框架窗口是指包括菜单、工具栏、状态栏和窗口客户区的整个应用程序的主窗口,相当于简单应用程序框架中所提到的主窗口。

    CDocument(文档):数据作为文档类的数据成员,由文档类来进行集中管理,而且文档类将直接与磁盘相联系,实现数据存储和读取。

    CView(视图):派生于Cwnd类,用于管理文档/视图结构中的窗口客户区。专门用于对应用程序的数据进行呈现和编辑,在视图类中有一个很重要的函数OnDraw(),是用于进行应用程序数据显示,一般在派生类中都要重写。OnDraw()函数将集中管理所有的数据的显示工作。

    2.Document/View结构中的相关类

    一般情况下,一个Document/View结构的运用程序会包含如下5个类:CWinApp,CFrameWnd,CDocument,CView,CDocTemplate 

    2.1  CWinApp

    CWinApp对象就代表程序本体。封装了MFC中有相当固定行为的操作,如MFC程序的初始化顺序:

    1. CMyWinApp theApp;  ----->这是程序中全局变量,它是唯一的,先于WinMain()函数构造完成,CWinApp中的某些成员变量因为theApp这个全局变量的诞生而得到配置和初值;
    2. theApp配置完,AfxWinAMain()登场,首先调用全局函数AfxGetApp()函数,取得指向theApp的指针;
    3. AfxWinInit(···)执行;
    4. pApp->InitApplication(),该函数一般不会被重写,所以调用的是CWinApp::InitApplication(),作用是初始化CDocManager类。【CDoManager类维护一个存放CDocTemplate指针的链表,CDocTemplate对象在InitInstance中创建并加入到链表中】
    5. pApp->InitInstance(),每个子类都要重写InitInstance(),因为在基类中无定义。其中开始创建框架窗口(p=new CMyFrameWnd();p->ShowWindow()//显示窗口;                           p->UpdateWindow()//这里发出一个WM_PAINT?暂时不知道干嘛)
    6. pApp->Run(),“程序的源头活水”,进入消息循环。子类没有重写Run(),所以调用(及依次调用)的是CWinApp::Run()·······>CWinThread::Run()······>CWinThread::PumpMessage()······>::TranslateMessage()和::DispatchMessage()消息处理

    要想新创建一个程序直接继承CWinApp即可,生产app的流水线已经装配好。

     

    2.2  CFrameWnd

    框架窗口是指包括菜单、工具栏、状态栏和窗口客户区的整个应用程序的主窗口,相当于简单应用程序框架中所提到的主窗口。在MFC程序中,一般并不需要经常对CFrameWnd类进行操作,给View提供客户区和一些可操作的菜单等;

    2.3 CDocument

    对数据进行集中管理。将数据作为它的成员数据,能和磁盘交互,将数据写入磁盘或从磁盘读取出来(依靠Serialize()函数完成数据存取任务)

    a.维护一个指向文档模板的指针,该指针可以用来设置标题,文档被删除时通知文档模板等

    b.维护一个指向打开的视图链表的指针,用于视图和文档通信

    2.4 CView

    对Document中的数据展示和编辑。用OnDraw()函数展示数据,但应用程序的数据却存放在文档类中,视图类通过函数GetDocument()返回指向文档类的指针,通过这个指针就可以访问到文档类中的公有数据成员。

    2.5 CDocTemplate 

    文档模板类(CDocTemplate)的作用是集中管理CFrameWnd,CDocument和CView,将它们视为一个整体。同时还加载了菜单以及与菜单资源使用一个ID的快捷键等资源;

    它一般派生出来个类:CMultiDocTemplate和CSingleDocTemplate,

    3 一些重要的函数

    *************************************标题错误:CView类中的函数以及功能*

    4.MFC继承体系

     

    ========================================

    http://blog.sina.com.cn/s/blog_62ce00c90100ld9h.html

    ========================================

  • 相关阅读:
    node.js的request模块
    PHP实现一个简单url路由功能
    关于seajs
    CodeIgniter集成Smarty
    node.js批量修改图片名
    Node.js创建目录实例
    Bootstrap的表单设计器
    onbeforeunload事件被a链接触发的问题
    Socket.IO + Express实现的跨浏览器、子域的聊天室
    NodeJS获取命令行后面的参数
  • 原文地址:https://www.cnblogs.com/lp3318/p/6057886.html
Copyright © 2011-2022 走看看