首页 > 代码库 > 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)
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。