• MFC DAY01


    一 MFC课程的安排
    MFC - 微软基础类库和框架
    COM - 组件对象的编程原理和应用
    ADO - WINDOWS下 数据库的访问和操作
    SOCKET - WINDOWS下网络通信编程
    二 需要掌握的技能
    熟练掌握 断点调试 程序
    学会使用 call stack(调用堆栈)查看函数之间的调用关系
    熟练掌握 vc下的 向导 和 工具
    借助MSDN ,了解整个程序的流程。
    三 对大家的期望
    不要缺课,课程连续性极强。
    多思考,多练习.
    营造良好的课堂气氛。
    ********************************************
    一 MFC 概念 和 作用
    1 什么是MFC?
    全称为 Microsoft Foundation Class Library我们称
    之为 微软基础类库。封装了大量windowsAPI函数,以及C++的一些数据结构类。
    1.1 MFC就是一个类库(动态MFC库/静态MFC库)
    1.2 MFC还是一个应用程序框架
    2 为什么使用 MFC
    基于框架之上进程编程,提高工作效率,减少开发周期
    节约开发成本。
    二 MFC的头文件
    afx 全称:application framework X(版本)
    afx.h - 提供了MFC库中类的声明
    afxwin.h - 包含了 afx.h 和 windows.h
    afxext.h - 提供了对扩展 口类的支持
    例如:工具栏 和 状态栏 等等..

    附:
    以Afx...可以确定为MFC库中全局函数。
    以::....可以确定为WIN32的API函数。

    三 使用MFC库可以实现的应用程序
    1 使用MFC库实现自己的控制台程序
    多了一个全局对象 CWinApp theApp
    入口函数和以往的入口函数有区别。
    2 使用MFC库实现自己的静态库程序
    3 使用MFC库实现自己的动态库程序
    3.1 规则库
    使用静态MFC库制作自己的规则动态库
    使用动态MFC库制作自己的规则动态库
    3.2 扩展库
    规则库可以被各种程序调用,扩展库只能被支持
    MFC的程序调用。
    4 使用MFC库制作自己的窗口程序
    4.1 单文档视图构架程序
    CFrameWnd - 框架窗口类,负责管理主框架窗口。
    CWinApp - 应用程序类,负责整个程序的执行流程。
    CDocument - 文档类,负责管理数据。
    (包含 数据 提取/转换/存储)
    CView - 视图窗口类,负责管理视图窗口,显示数据。
    4.2 多文档视图构架程序
    CMDIChildWnd - 子框架窗口类,负责管理子框架窗口
    CMDIFrameWnd - 主框架窗口类,负责管理主框架窗口
    CWinApp - 应用程序类,负责整个程序的执行流程。
    CDocument - 文档类,负责管理数据。
    (包含 数据 提取/转换/存储)
    CView - 视图窗口类,负责管理视图窗口,显示数据。
    4.3 对话框构架程序
    CWinApp - 应用程序类,负责整个程序的执行流程。
    CDialog - 对话框类,负责管理对话框窗口。
    四 MFC库中类的概述
    1 CObject - MFC库中绝大部分类基类。
    运行时类信息机制
    动态创建机制
    序列化机制
    2 CCmdTarget - 消息映射机制的最基类
    3 CWinThread/CWinApp - 应用程序类,负责程序的流程。
    4 CDocument及其子类 - 文档类,负责管理数据。
    5 Exceptions - 异常类,封装了MFC程序的各中异常情况
    6 CFile及其子类 - 文件操作类,封装了对硬盘文件的各种操作
    7 CWnd - MFC库中所有窗口类的最基类。
    8 Frame Windows - 框架窗口类,封装了对各种框架窗口的
    操作。
    9 Dialog Boxes - 对话框类,封装了对各种对话框窗口的
    操作。
    10 CView及其子类 - 视图窗口类,封装了对各种视图窗口
    的操作。
    11 Controls - 控件类,封装了对各种控件的操作。
    12 CDC/CGdiObject及其子类 - 绘图类,封装了windows下
    绘图设备 以及 各种 GDI绘图对象。
    13 CArrary/CList/CMap及其子类 - 封装了C++语法中
    三种对应的数据结构。
    14 非CObject类 - 对各种数据接收进行封装。
    例如:CPoint/CRect/CTime/CString
    五 第一个MFC程序
    1 配置环境
    1.1 删除入口函数(WinMain)。
    1.2 将头文件 更改为 <afxwin.h>。
    1.3 Project-->Settings菜单项中设置使用MFC库。
    2 代码的书写
    2.1 从CFrameWnd类派生自己的框架窗口类CMyFrameWnd
    2.2 从CWinApp类派生自己的应用程序类 CMyWinApp
    并定义了一个 这个类的全局对象theApp
    还重写了CWinApp::InitInstance成员虚函数。
    3 程序执行过程
    3.1 构造 theApp 对象,执行CWinApp::CWinApp
    将theApp对象地址 保存到 当前程序模块状态信息中
    将theApp对象地址 保存到 当前程序线程状态信息中
    AfxGetThread / AfxGetApp - 返回theApp对象地址
    3.2 进入入口函数调用AfxWinMain
    3.2.1 获取 theApp 对象地址
    3.2.2 利用 theApp 调用应用程序类的成员虚函数
    InitApplication(初始化应用程序)。
    3.2.3 利用 theApp 调用应用程序类的成员虚函数
    InitInstance(注册窗口/创建并显示窗口)
    3.2.4 利用 theApp 调用应用程序类的成员虚函数
    Run(消息循环)
    1)如果没有消息利用 theApp 调用应用程序
    类的成员虚函数OnIdle(空闲处理)
    2)如果程序退出利用 theApp 调用应用程序
    类的成员虚函数ExitInstance(善后处理)
    六 CWinApp类成员
    1 成员虚函数
    InitApplication
    InitInstance
    Run
    OnIdle
    ExitInstance
    2 成员变量
    m_pMainWnd - 保存 自己new的 框架类对象地址

  • 相关阅读:
    常用公式 距离、波形、力
    代码字体
    关于flash缩放的详细解释
    色调
    工程项目1
    使用double无法得到数学上的精确结果的原因及为何不能用double来初始化BigDecimal
    第一次测验感受
    原码,补码,反码的概念及Java中使用那种存储方式
    static的含义
    第一次测试代码
  • 原文地址:https://www.cnblogs.com/Renekton/p/3864134.html
Copyright © 2020-2023  润新知