首页 > 代码库 > MFC_day01

MFC_day01

         MFC 第一天   (个人笔记) MFC是基于Windows平台的一个框架开发,我们主要学习的东西有如下四点:1)MFC - 微软基础类库和框架;
2)COM - 组件编程的应用;
3)ADO - windows平台下数据库的访问和操作;
4)SOCKET - windows平台下网络通讯编程;
二.需要我们掌握技能如下:
1)熟练使用断点调试程序的方法;
2)掌握CALL STACK(调用堆栈)方法,查看函数之间的调用关系;
3)会借助MSDN 查看开发帮助手册;
4)学会使用VC6.0的工具和向导;
*********************************************************************了解以上知识下面进入正题*********************************************************************一 .MFC的概念和作用
   1)什么MFC?
     全称为Microsoft Foundation Class Library我们称之为微软基础类库;
     1.1 从硬盘存在形式上来说 MFC就是一个库(静态/动态 MFC库);
     1.2 从原理上来说MFC还是一个程序框架;
   2)为什么使用MFC?
     基于框架编程,提高工作效率,减少开发周期,节约开发成本。
二.头文件
   afx.h - 包含了绝大部分类的声明。
   afxwin.h - 包含了 afx.h 和 windows.h。
   afxext.h - 包含了一些扩展类的声明。 例如:工具栏 和 状态栏....
附:****************************************************************
 以Afx.....开头的函数,可以确定是MFC库中封装的全局函数。
 以:: .........开头的函数,可以确定是WIN32的API函数。********************************************************************三.MFC应用程序的分类
  1)使用MFC制作自己控制台程序 (入口函数不同与以往的入口函数,多了一个全局对象 CWinApp theApp);
  2)使用MFC库制作自己的静态库程序。
  3)使用MFC库制作自己的动态库程序。
    使用静态MFC库制作自己的规则动态库。
    使用动态MFC库制作自己的规则动态库。
    使用MFC库制作自己的扩展动态库。
  4)使用MFC库制作自己的窗口程序
   单文档视图构架程序
   CFrameWnd - 框架窗口类,封装了关于框架窗口的各种操作
   CWinApp - 应用程序类,负责管理程序流程。
   CDocument - 文档类,负责管理数据(数据提取/转换/存储...)
   CView - 视图窗口类,封装了关于视图窗口的操作
  多文档视图构架程序
  CMDIChildWnd - 子框架窗口类,封装了关于子框架窗口操作
  CMDIFrameWnd - 主框架窗口类,封装了关于主框架窗口操作
  CWinApp - 应用程序类,负责管理程序流程。
  CDocument - 文档类,负责管理数据(数据提取/转换/存储...)
  CView - 视图窗口类,封装了关于视图窗口的操作
  对话框构架程序
  CWinApp - 应用程序类,负责管理程序流程。
  CDialog - 对话框窗口类,封装了关于对话框窗口的操作
四)MFC库中类的概述
1)COjbect - MFC库中绝大部分类的最基类
  运行时类信息机制 / 动态创建机制 / 序列化机制
2)CCmdTarget - 消息映射机制的最基类
3 CWinThread / CWinApp - 应用程序类,负责管理程序流程
4 CDocument及其子类 - 文档类,封装了关于各种数据的操作
5 Exceptions - 异常处理类,封装了MFC库中各种异常情况的处理
6 CFile及其子类 - 文件操作类,封装了关于各种文件的读写等操作。
7 CWnd - MFC库中所有窗口类的最基类
8 Frame Windows - 框架窗口类,负责管理各种框架窗口
9 DialogBoxes - 对话框窗口类,封装了关于各种对话框窗口的操作
10 Views - 视图窗口类,封装了关于各种视图窗口的操作
11 Controls - 控件窗口类,封装了关于各种控件窗口的操作
12 CDC及其子类 - 封装各种绘图设备,以及绘图函数
13 CGdiObject及其子类 - 封装了各种GDI绘图对象的使用
14 CArrary / CList / CMap及其子类 - 封装了C++中相应的数据结构
15 非CObject类 - 封装了各种数据结构的操作。
例如:CPoint / CRect / CSize / CTime....
五 第一个MFC程序
1 配置环境
1)删除入口函数WinMain
2)将头文件更改为<afxwin.h>
3)Project-->Settings中设置使用MFC库
2 代码书写
2.1 从CFrameWnd类公有派生了一个自己的框架窗口类CMyFrameWnd
2.2 从CWinApp类公有派生了一个自己的应用程序类CMyWinApp
重写了CWinApp类成员虚函数 InitInstance
3 程序执行流程
3.1 构造theApp对象(爆破点)
1)将&theApp保存到 当前程序线程状态信息中
2)将&theApp保存到 当前程序模块状态信息中
3)AfxGetThread()/AfxGetApp() - 返回&theApp
3.2 进入入口函数(WinMain)
1)获取theApp(爆破点)的地址
2)利用theApp调用应用程序类成员虚函数
InitApplication(初始化)
3)利用theApp调用应用程序类成员虚函数
InitInstance(创建/显示窗口)
4)利用theApp调用应用程序类成员虚函数
Run(消息循环)
4.1)如果没有消息 利用theApp调用应用程序类成员虚函数
OnIdle(空闲处理)
4.2)如果程序退出 利用theApp调用应用程序类成员虚函数
ExitInstance(善后处理)
六 CWinApp类的成员函数
InitApplication
InitInstance
Run
OnIdle
ExitInstance
七 对象关系图
theApp
|->m_pMainWnd (保存框架类对象地址pFrame)       

MFC_day01