zoukankan      html  css  js  c++  java
  • MFC学习(一) MFC基础类及其层次结构

    从类CCmdTarget派生出绝大多数MFC中的类,其层次结构如下图:

    从根类Cobject层层派生出绝大多数MFC中的类,层次结构如下图:

    MFC中重点类:

    CObject类是MFC的绝大部分类的基类。该类完成动态空间的分配与回收,支持一般的对象诊断、运行时类型标识,出错信息处理和文档序列化等。

          (1)对象诊断:利用成员函数AssertValid进行对象有效性检查;利用成员函数Dump输出对象的数据成员的值,诊断信息以文本形式放入一个数据流中,用于调试器的输出窗口信息显示。(只能用于Debug版的应用程序)

          (2)运行时类型识别:GetRuntimeClass根据对象的类返回一个相关联的指向CRuntimeClass结构的指针,它包含了一个类的运行信息;函数IsKindOf用于测试对象与给定类的关系。

          (3)通过与Carchive相结合,CObject类为其派生类提供了序列化功能。要创建一个支持序列化的派生类,必须将DECLARE_SERIAL宏添加到类定义中,将IMPLEMENT_SERIAL添加到类的实现文件中。

      

      CCmdTarget:由CObject类直接派生,所有能实行消息映射MFC类的基类。将系统事件和窗口事件发送给响应这些事件的对象,完成消息发送、等待和派遣(调度)等工作,实现应用程序的对象之间协调运行,功能如下:

      (1)消息发送:MFC应用程序为每个CCmdTarget派生类创建一个称为消息映射表的静态数据结构,可将消息映射到对象所对应的消息处理函数上。

      (2)设置光标:程序正在进行某种操作:BeginWaitCursor()将光标改为沙漏形状;操作完成:EndWaitCursor()将光标改回到之前的形状;处于等待状态时由于某些操作改变了光标形状后,RestoreWaitCursor()用于将光标还原为等待状态。

      (3)支持自动化:CCmdTarget类支持程序通过COM接口进行交互操作,自动翻译COM接口的方法。方法是调用EnableAutomation()、FromIDispatch()、GetIDispatch()、IsResultExpected()和 OnFinalRelease()。

     

      CWinThread类:

      由CCmdTarget派生,主要工作是创建和处理消息循环

     

      CWinApp: 从CWinThread类派生而来。CWinThread类用来完成对线程的控制,包括线程的创建,运行,终止和挂起等。成员函数InitApplication()、InitInstance()、Run()。

    在MFC应用程序中有且仅有一个CWinApp派生类的对象,代表程序运行的主线程,代表应用程序本身

     

      CDocument: 文档类,包含了应用程序在运行期间所用到的数据。从CCmdTarget派生,作为用户文档的基类,代表了用户存储或打开一个文件。主要功能是把对数据的处理从对用户的界面处理中分离出来,同时提供一个与视图类交互的接口。常用的成员函数有:

    OnNewDocument()建立新文档。

    OnOpenDocument()打开一个文档。

      CWnd: 通用的窗口类,用来提供windows中所有的通用特性。由CCmdTarget类直接派生,是MFC中最基本的GUI对象。公共变量m_hWnd用于存放供API函数调用的窗口句柄。CWnd类和消息映射机制隐藏了窗口函数WndProc。一个Windows消息通过消息映射发送到相应的CWnd类OnMessage成员函数,可以重载。

      CView: 用于让用户通过窗口来访问文档以及负责文档内容的显示。文档视图结构中的用户操作区。

      CFrameWnd: 从CWnd继承来的,并实现了标准的框架应用程序。主要用来掌管一个窗口。其对象是一个框架窗口,包括边界、标题栏、菜单、最大化按钮、最小化按钮和一个激活的视图

      其常用成员函数:

        GetActiveDocument()得到当前文档的指针。

        GetActiveView()得到当前视图的指针。

        SetActiveView():激活一个视图。

        GetTitle()得到框架窗口的标题。

        SetTitle()设置框架窗口的标题。

        SetMessageText()设置状态栏文本。

      CDialog: 用来控制对话框窗口。

      CMDIFrameWnd和CMDIChildWnd: 分别用来多文档应用程序的主框架窗口和文档子窗口的显示和管理。

      CMiniFrameWnd:一种简化的框架窗口,没有最大化和最小化窗口按钮,也没有窗口系统菜单,很少用。

  • 相关阅读:
    对话框
    枚举、联合
    WinCE 应用程序开机自启动方法
    调用directshow出现链接错误
    修改了WINCE自带的驱动程序后如何编译
    如何设置WINCE系统字体、字号?如何设置自己开发的软件的字体、字号
    在不采用硬件计时器的情况下如何创建更精确的计时器
    驱动程序如何发通知给应用程序
    如何得到WAV文件播放的总时间
    解决CE6和CE5在Platform Builder的Connectivity Options上的冲突
  • 原文地址:https://www.cnblogs.com/liufei1983/p/7131002.html
Copyright © 2011-2022 走看看