1、MFC的概念和做用数据库
一、什么是MFC?编程
全称:Microsoft Foundation Class Library(微软基础类库)windows
1-MFC从硬盘存在形式来讲就是一个库(静态MFC库、动态MFC库)数据结构
2-MFC从原理来讲仍是一个程序框架框架
二、为何使用MFC?函数
基于框架编程,提升工做效率,减小开发周期,下降开发成本。工具
2、几个重要的头文件3d
afx.h--包含了MFC中绝大部分类的声明对象
afxwin.h--包含了afx.h和windows.hblog
afxext.h--提供了对扩展类的支持,例如:工具栏、状态栏...
附:以Afx...开头的函数,能够肯定为MFC库中的一个全局函数;
以::...开头的函数,能够肯定为Win32的API函数;
3、MFC应用程序的分类
一、使用MFC库制做本身的控制台程序
相比Win32控制台程序:
多了一个全局对象 CWinApp theApp
入口函数不一样于以往的入口函数
二、使用MFC库制做本身的静态库程序
三、使用MFC库制做本身的动态库程序
1--使用MFC库制做本身的规则动态库(静/动态MFC库)
2--使用MFC库制做本身的扩展动态库
区别:规则库能够被全部程序调用,扩展库只能被支持MFC的程序调用
四、使用MFC库制做本身的窗口程序
1--单文档视图构架程序
CFrameWnd-框架窗口类,封装了关于框架窗口的操做
CWinApp-应用程序类,封装了关于程序流程的操做
CDocument-文档类,封装了关于数据的操做(提取、转换、存储...)
CView-视图窗口类,封装了关于视图窗口的操做(绘图)
2--多文档视图构架程序
CMDIChildWnd-子框架窗口类,封装了关于子框架窗口的操做
CMDIFrameWnd-主框架窗口类,封装了关于主框架窗口的操做
CWinApp-应用程序类,封装了关于程序流程的操做
CDocument-文档类,封装了关于数据的操做(提取、转换、存储...)
CView-视图窗口类,封装了关于视图窗口的操做(绘图)
3--对话框构架程序
CWinApp-应用程序类,封装了关于程序流程的操做
CDialog-对话框窗口类,封装了关于对话框窗口的操做
4、MFC库中类的概述
一、CObject-MFC库中绝大部分类的最基类
封装MFC库中最基本的几个机制:
运行时类信息机制、动态建立机制、序列化机制
二、CCmdTarget-消息映射机制的最基类
三、CWinThread/CWinApp-应用程序类,负责管理程序的流程
四、CDocument及其子类-文档类,负责管理数据
五、Exceptions-异常类,封装了关于MFC中各类异常状况的处理
六、CFile及其子类-文件操做类,封装了关于各类文件的操做
七、CWnd-窗口类的最基类,封装了关于窗口的最基本的操做
八、Frame Windows-框架窗口类,封装了关于各类框架窗口的操做
九、Dialog Boxes-对话框窗口类,封装了关于各类对话框窗口的操做
十、Views-视图窗口类,封装了关于各类视图窗口的操做
十一、Controls-控件窗口类,封装了关于各类控件窗口的操做
十二、CDC及其子类-封装了各类绘图设备,以及绘图函数
1三、CGdiObject及其子类-封装了各类绘图对象的操做
1四、CArrary/CList/CMap及其子类-封装了C++中相应的数据结构
1五、非CObject类-封装了关于各类结构的操做
例如:CPoint,CRect,CString,CTime...
5、MFC的类向导功能(ClassWizard)
在VC6的菜单栏->查看->创建类向导(Ctrl+W)
一、Message Maps选项卡
①Project:下拉列表框给出当前工程名称。实际上,对于VC++来讲,一个工做区空间(.dsw)中能够包含多个工程(.dsp)。所以,若是工做区中有多个工程,能够在Project下拉列表框选择当前须要处理的工程。
②Class name:下拉列表框显示当前工程中包含的类,用户能够选择任何存在于当前工程中的类,为其添加消息处理函数等。
③Object IDs:列表框列出当前选择的类所包含的全部资源的ID号,包括菜单项、对话框控件等,列表中的第一项老是当前的类名。
④Messages:列表框列出对应于Object IDs框中所选中的当前项可处理的消息,以及针对当前类可被重写的MFC虚函数。
⑤Member functions:列表框列出当前类包含的全部成员函数。其中,前面标注有“V”字符的是虚函数,标注“W”字符的是Windows消息处理函数。
⑥Add Class:按钮容许用户在工程中添加一个新类。新类能够是本身建立的,也能够从ActiveX库中选取。
⑦Add Function:按钮容许用户向Member Functions列表框中添加一个新的消息处理函数或重载基类的虚函数。
⑧Delete Function:按钮容许用户删除Member Functions列表框中所选中的函数。
⑨Edit Code:按钮打开编辑窗口,容许用户对Member Functions框中所选中的项进行编辑。
二、Member Variables选项卡
①Project:下拉列表框与Message Maps选项卡上的Project下拉列表框含义相同,给出当前工程名称。
②Class name:下拉列表框与Message Maps选项卡上的Class name下拉列表框相同,显示当前工程中包含的类,用户能够从中选择当前要操做的类。
③Control IDs:显示对话框中所具备的控件的ID号;Type项表示成员变量的类型;Member项表示成员变量的名字。
④Add Class:按钮容许用户在工程中添加一个新类。新类能够是本身建立的,也能够从ActiveX库中选取。
⑤Add Variable:按钮用于给选定的控件添加成员变量。
⑥Delete Variable:按钮用于删除选定控件的成员变量。
⑦Update Columns:按钮用于当数据源中的表结构发生变化时,便可更新相应的记录集类,以便与最新的表结构保持一致。
⑧Bind All:按钮用于把数据库内指定表中的字段与记录集类相应数据成员一一绑定。默认状况下,ClassWizard基于每一个字段的名称肯定记录类内相应的数据成员名称。
三、Automation选项卡
①Project:下拉列表框给出当前工程名称。
②Class name:下拉列表框显示当前工程中包含的类,用户能够选择任何存在于当前工程中的类,包括不支持Automation的类。
③External names:列表框列出已加到当前类中的方法及属性的外部名。这些名字供Automation客户程序使用。
④Implementation:文本框显示External names框中选中的方法及属性在C++类中是怎样实现的:S表示固有属性,C表示自定义属性,M表示方法,粗体表示默认的属性。
⑤Add Class:按钮容许用户在工程中添加一个新类。新类能够是本身建立的,也能够从ActiveX库中选取。
⑥Add Method:按钮用于给类添加新的Automation方法。增长或删除方法时,Class Wizard自动更新映射表。此项只对支持Automation的类有效。
⑦Add Property:按钮用于给类添加新的Automation属性。增长或删除属性时,Class Wizard自动更新映射表,此项只对支持Automation的类有效。
⑧Delete:按钮用于删除External names框中选定的方法或属性名。若是属性是用Get/Set方式访问的,必须手工删除.cpp文件里的Get和Set成员函数。
⑨Edit Code:按钮打开编辑窗口进行编辑。
⑩Data Binding:按钮用于指定Automation控件支持的数据绑定层次。
四、ActiveX Events选项卡
①Project:下拉列表框给出当前工程名称。
②Class name:下拉列表框显示当前工程中包含的类,用户能够选择任何存在于当前工程中的类,包括不支持ActiveX的类。
③External names:列表框列出已加到当前类中的成员函数与成员变量名。这些名字供Automation客户程序使用。
④Implementation:文本框显示External names框中选中的方法及属性在C++类中的实现:S表示固有属性,C表示自定义属性,M表示方法,粗体表示默认的属性。
⑤Add Class:按钮容许用户在工程中添加一个新类。新类能够是本身建立的,也能够从ActiveX库中选取。
⑥Add Event:按钮容许用户加入Automation事件。该事件用于类与该类容器之间的通讯。
⑦Delete:按钮用于删除选中的Automation事件。
五、Class Info选项卡
①Project:下拉列表框给出当前工程名称。
②Class name:下拉列表框显示当前工程中包含的类。用户能够选择当前须要处理的类。
③File details:显示当前类的文件及资源ID号等信息。
④Advanced options:控件组包含:
Message filter:下拉列表框列出对当前选中的类有效的全部消息分类,这里是按照消息所属窗口或对话框类型进行分类的。
Foreign class:下拉列表框的内容由当前选中类的类型决定。若是当前选中的类是对话框、有格式视图或记录集视图,那么此框列出全部与选中的类相关联的外部类名。在其它状况下,则显示为None。
Foreign variable:框列出与当前选中的类相关的全部外部变量。此选项通常用于数据库类。在编辑记录集视图时,能够选取相关的记录集,并能够输入一个新的变量名。
⑤Add Class:按钮用于添加新类。