zoukankan      html  css  js  c++  java
  • 【笔记】《深入浅出MFC》第5章 总观Application Framework

    凝聚性强、组织化强的类库就是Application Framework。一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务,这就是Application Framework。

    Application Framework是一组超级的类库,能够被称为Framework者必须是其中的类性质紧密咬合,互相呼应。

    绝大部分类库,往往以一个或两个类,作为其它绝大部分类的基础,MFC也一样。CObject是万类之首,凡派生自CObject者,得以继承数个面向对象重要性质,包括RTTI(运行时类型识别)、Persistence(对象保存)、Dynamic Creation(动态创建)、Diagnostic(错误诊断)。

    MFC支持的数据处理类(collection classes)有:

    异常处理有关的MFC类有以下11种:

    凡派生自CWnd的类才能收到WM_窗口消息(WM_COMMAND除外)。

    所谓窗口handle和C++对象结盟,实际上是CWnd对象有一个成员变量m_hWnd,就放着对应窗口handle。所以,只要有CWnd对象或CWnd对象指针,就可以获得其窗口handle。

    HWND hWnd = pWnd->m_hWnd;

    CCmdTarget是CWnd的父类。派生自它,类才能够处理命令消息WM_COMMAND。这个类是消息映射以及命令消息传递的大部分关键。

    Document/View的观念是希望把数据的本体和数据的显示分开处理。由于文件产生之际,必须动态创建Document/View/Frame三种对象,所以又必须由所谓的Document Template管理之。Document Template扮演黏胶的角色,把Document 和View 和其Frame(外框窗口)胶黏在一块儿。

    CDocument:当你为自己程序由CDocument派生出一个子类后,应该在其中加上成员变量,以容纳文件数据;并加上成员函数,负责修改文件内容以及读写文件。读写文件由虚函数Serialize负责。

    下面是几个常见的Afx全局函数:

    CObject和CRuntimeClass中封装了数个所谓的object services,包括“取得运行时的类信息(RTTI)”、Serialization(文件读写)、动态产生对象等等。所有派生自CObject的类,都继承这些机能。

    MFC针对这些机能定义了一些宏:

    MFC的消息映射与命令传递由以下宏完成:

    MFC的大部分数据类型和一般的Win32程序所用的相同,下面是共用的数据类型:

    下面是MFC独特的数据类型:

  • 相关阅读:
    Linux异常现场--pt_regs浅析
    内核调试--确认结构体的size和结构体成员的偏移
    Linux内核中root_domain的建立与初始化
    solr学习笔记-全量更新与增量更新,去除html标签
    oracle 替换clob里面的某个特定的字符串
    oracle重置序列从1开始
    oracle提取汉字拼音首字母
    layer.open的yes函数中获取弹出层(子集iframe)中的元素或参数
    java.util.Date日期时间工具类
    js操作将数字转换成 , 逗号分割的字符串并追加‘万’字
  • 原文地址:https://www.cnblogs.com/mengwang024/p/4973108.html
Copyright © 2011-2022 走看看