初识MFC

一、MFC的概念和作用

  1、什么是MFC?

     全称:Microsoft Foundation Class Library(微软基础类库)

     1-MFC从硬盘存在形式来说就是一个库(静态MFC库、动态MFC库)

     2-MFC从原理来说还是一个程序框架

  2、为什么使用MFC?

     基于框架编程,提高工作效率,减少开发周期,降低开发成本。

二、几个重要的头文件

  afx.h--包含了MFC中绝大部分类的声明

  afxwin.h--包含了afx.h和windows.h

  afxext.h--提供了对扩展类的支持,例如:工具栏、状态栏...

  附:以Afx...开头的函数,可以确定为MFC库中的一个全局函数;

    以::...开头的函数,可以确定为Win32的API函数;

三、MFC应用程序的分类

  1、使用MFC库制作自己的控制台程序

    相比Win32控制台程序:

    多了一个全局对象 CWinApp theApp

    入口函数不同于以往的入口函数

  2、使用MFC库制作自己的静态库程序

  3、使用MFC库制作自己的动态库程序

    1--使用MFC库制作自己的规则动态库(静/动态MFC库)

    2--使用MFC库制作自己的扩展动态库

    区别:规则库可以被所有程序调用,扩展库只能被支持MFC的程序调用

  4、使用MFC库制作自己的窗口程序

    1--单文档视图构架程序

      CFrameWnd-框架窗口类,封装了关于框架窗口的操作

      CWinApp-应用程序类,封装了关于程序流程的操作

      CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)

      CView-视图窗口类,封装了关于视图窗口的操作(绘图)

     2--多文档视图构架程序

      CMDIChildWnd-子框架窗口类,封装了关于子框架窗口的操作

      CMDIFrameWnd-主框架窗口类,封装了关于主框架窗口的操作

      CWinApp-应用程序类,封装了关于程序流程的操作

      CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)

      CView-视图窗口类,封装了关于视图窗口的操作(绘图)

    3--对话框构架程序

      CWinApp-应用程序类,封装了关于程序流程的操作

      CDialog-对话框窗口类,封装了关于对话框窗口的操作

四、MFC库中类的概述

  1、CObject-MFC库中绝大部分类的最基类

     封装MFC库中最基本的几个机制:

      运行时类信息机制、动态创建机制、序列化机制

  2、CCmdTarget-消息映射机制的最基类

  3、CWinThread/CWinApp-应用程序类,负责管理程序的流程

  4、CDocument及其子类-文档类,负责管理数据

  5、Exceptions-异常类,封装了关于MFC中各种异常情况的处理

  6、CFile及其子类-文件操作类,封装了关于各种文件的操作

  7、CWnd-窗口类的最基类,封装了关于窗口的最基本的操作

  8、Frame Windows-框架窗口类,封装了关于各种框架窗口的操作

  9、Dialog Boxes-对话框窗口类,封装了关于各种对话框窗口的操作

  10、Views-视图窗口类,封装了关于各种视图窗口的操作

  11、Controls-控件窗口类,封装了关于各种控件窗口的操作

  12、CDC及其子类-封装了各种绘图设备,以及绘图函数

  13、CGdiObject及其子类-封装了各种绘图对象的操作

  14、CArrary/CList/CMap及其子类-封装了C++中相应的数据结构

  15、非CObject类-封装了关于各种结构的操作

    例如:CPoint,CRect,CString,CTime...

五、MFC的类向导功能(ClassWizard)

  在VC6的菜单栏->查看->建立类向导(Ctrl+W)

  

  1、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框中所选中的项进行编辑。

  

  2、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基于每个字段的名称确定记录类内相应的数据成员名称。

  

  3、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控件支持的数据绑定层次。

  

  4、ActiveX Events选项卡

    ①Project:下拉列表框给出当前工程名称。

    ②Class name:下拉列表框显示当前工程中包含的类,用户可以选择任何存在于当前工程中的类,包括不支持ActiveX的类。

    ③External names:列表框列出已加到当前类中的成员函数与成员变量名。这些名字供Automation客户程序使用。

    ④Implementation:文本框显示External names框中选中的方法及属性在C++类中的实现:S表示固有属性,C表示自定义属性,M表示方法,粗体表示默认的属性。

    ⑤Add Class:按钮允许用户在工程中添加一个新类。新类可以是自己创建的,也可以从ActiveX库中选取。

    ⑥Add Event:按钮允许用户加入Automation事件。该事件用于类与该类容器之间的通信。

    ⑦Delete:按钮用于删除选中的Automation事件。

  

  5、Class Info选项卡

    ①Project:下拉列表框给出当前工程名称。

    ②Class name:下拉列表框显示当前工程中包含的类。用户可以选择当前需要处理的类。

    ③File details:显示当前类的文件及资源ID号等信息。

    ④Advanced options:控件组包含:

      Message filter:下拉列表框列出对当前选中的类有效的所有消息分类,这里是按照消息所属窗口或对话框类型进行分类的。

      Foreign class:下拉列表框的内容由当前选中类的类型决定。如果当前选中的类是对话框、有格式视图或记录集视图,那么此框列出所有与选中的类相关联的外部类名。在其它情况下,则显示为None。

      Foreign variable:框列出与当前选中的类相关的所有外部变量。此选项一般用于数据库类。在编辑记录集视图时,可以选取相关的记录集,并可以输入一个新的变量名。

    ⑤Add Class:按钮用于添加新类。

(0)

相关推荐

  • 命名规范

    类文件都是以.class.php为后缀(这里是指的ThinkPHP内部使用的类库文件,不代表外部加载的类库文件),使用驼峰法命名,并且首字母大写,例如 DbMysql.class.php: 类的命名空 ...

  • 初识宜兴紫砂陶优势(桑黎兵、朱霞琴)

    "茗注者,莫妙于砂:壶精者,莫过于阳羡."明代杰出戏曲小说家李渔如是所云.这并非空穴来风. 中国历来就是茶的民族,茶道深入寻常百姓之家随处可见,而宜兴紫砂陶天生特有的"宜 ...

  • 【蒙以养正】初识古人的儿歌-第1集《小儿语》节要

    传统育儿经 1篇原创内容 公众号 初识古人的儿歌-第1集| 開吉法師主講 2019/12/21 视频学习: 课程全文: <小兒語>這部書,我們先來了解一下它的作者.它的作者是呂得勝,呂得勝 ...

  • 太极拳五行合一功,让人初识前进、后退、左顾、右盼、中定

    五行合一功,是根据古传<太极拳释名>一文:「前进.后退.左顾.右盼.中定」的论述编创的,乃心性太极拳(心性太极拳功道)--心性太极学之太极功体系中的入门功夫.属太极拳基本功范畴,适合太极拳 ...

  • 队前教育|你好,少先队——初识“六知六会一做”

    队前第一课 少先队"六知六会一做"的知识 六知 1 知道少先队的队名 中国少年先锋队(简称"少先队")是中国少年儿童的群众组织,是少年儿童学习中国特色社会主义和 ...

  • 初识屏蔽泵(一)

    一.屏蔽泵的工作原理 1.屏蔽泵的工作原理与离心泵相同,由叶轮旋转产生离心力,使叶轮中的液体脱离叶轮,使速度能头变压力能头,起到输送介质的作用.屏蔽泵工作的关键就是利用电机定子与转子间的作用特点,转子 ...

  • 推荐初次聊天话术100句分享给大家,解决你们初识尬聊

    今天小橘子先生推荐初次聊天话术100句分享给大家,希望能够帮助到你们! 一.自来熟式聊天 在刚加上妹子微信的时候,自来熟可以让你的聊天少走很多的弯路,在最快的时间内和妹子消除陌生感,当陌生感消除,妹子 ...

  • 捞鱼 -(495)初识毛老师

    初识毛老师 毛老师,五十零几岁,夫人的姨表妹夫.他是学校教书育人的老师. 夫人有两位年迈的阿姨在南京,由于工作和生活的原因,好长好长时间想来南京探望,但总是挤不出时间,一晃已数十年没见面了.前几天,终 ...

  • 主力逻辑量化标准 005 初识量柱

    005 初识量柱--地量柱的意义:主力检验洗盘效果的密码,股价或将触底而起 昨天文章简介天量柱的意义,今天两市共有57只涨停,有10只是天量柱之后直接涨停的. 顺控发展七连板作为市场龙一,华通热力五连 ...

  • 【地产投资测算学习1】初识投资测算表以及基础准备

    从今天开始Lawping(公众号taxreview)会陆续写写地产投资测算方面的文章.由于我的工作主要是地产税务管理,重点会写在投资测算中的增值税.企业所得税和土地增值税等地产三大税.但由于各税种,特 ...