以下为本人学习笔记
原视频:黑马程序员MFC教程

一、基础概念

  1. SDK:软件开发工具包(Software Development Kit),第三方工具
  2. API:Windows擦欧总系统提供给应用程序编程的接口
  3. 窗口:一个Windows应用程序至少有一个窗口,称为主窗口。是Windows应用程序与用户进行交互的接口。两种窗口:子窗口和父窗口;窗口由两部分构成:客户区和非客户区
  4. 句柄(HANDLE):Windows程序中,有各种各样的资源(窗口、图标、光标、画刷等),系统在创建这些资源时会为他们分配内存,并返回标识这些资源的标识号,即句柄
  5. WinMain函数:当Windows操作系统启动一个程序时,他调用的就是该程序的WinMain函数(实际是由插入到可执行文件中的启动代码调用的)。WinMain是Windows程序的入口点函数,当WinMain函数结束或返回时,Windows应用程序结束
  6. Windows编程模型:
    1 WinMain函数的定义
    2 创建一个窗口
    3 进行消息循环
    4 编写窗口的过程函数

二、创建MFC窗口

一个简单的MFC程序:

  1. 因为MFC是由C++编写的,编写MFC程序需要包含#include<afxwin.h> 头文件
  2. 自定义类MyApp继承于CWinApp应用程序类;MyApp app应用程序对象,有且仅有一个
  3. 程序入口InitInstance
  4. 入口中创建窗口
  5. 窗口类MyFrame继承于CFrameWnd
  6. MyFrame构造中 Create(NULL, 窗口名称)
  7. 创建窗口对象
  8. 显示和更新
  9. m_pMainWnd=frame保存指向应用程序的主窗口的指针(一种绑定,规定循环监听哪个窗口的消息)
  10. return True

三、消息映射机制

消息映射是一个将消息和成员函数相互关联的表。
将消息映射添加到一个类中的流程:

  1. 在所操作的类中,声明消息映射宏
  2. 通过放置标识消息的宏来执行消息映射,相对的类将在对BEGIN_MESSAGE_MAP和END_MESSAGE_MAP的调用之间处理消息
  3. 对应消息处理函数分别在类中声明,类外定义

    相关的宏都可以在MFC中文手册中找到

消息映射机制总结:

  1. 声明宏,写到.h中
  2. 分界宏,写到.cpp中
  3. 消息宏,写到分界宏中间
  4. 消息处理函数原型,声明到.h中
  5. 消息处理函数实现,写到.cpp中

四、MFC框架中一些重要的函数

  1. CtestAPP-InitInstance()
    应用程序类的一个虚函数,MFC应用程序入口
  2. CMainFrame-PreCreateWindow()
    当框架调用CreateEx函数创建窗口时,会首先调用PreCreateWindow函数。通过修改传递给PreCreateWindow的结构体类型参数CREATESTRUCT,应用程序可以更改用于创建窗口的属性。在产生窗口之前让程序员有机会修改窗口的外观。最后再调用CreateWindowEx函数完成窗口的创建
  3. CMainFrame-OnCreate()
    OnCreate是一个消息响应函数,是响应WM_CREATE消息的一个函数,而WM_CREATE消息是由Create函数调用的。一个窗口创建(Create)之后,会向操作系统发送WM_CREATE消息,OnCreate函数主要是用来响应此消息的。OnCreate不产生窗口,只是在窗口显示之前设置窗口的属性,如风格、位置等。
  4. CtestView-OnPaint() vs OnDraw()
    View类中,如果OnDraw和OnPaint同时存在,OnPaint会覆盖掉OnDraw
    OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用;
    OnDraw,一般来说,用户自己的绘图代码应该放在OnDraw中。
    当视图变得无效时(包括大小的改变、移动、被遮盖等),Windows发送WM_PAINT消息,该视图的OnPaint处理函数通过创建CPaintDC类的DC对象来响应消息并调用视图的OnDraw成员函数。OnPaint最后也要调用OnDraw,因此一般在OnDraw函数中进行绘制。

五、其他

  1. MFC中后缀名为Ex的函数都是扩展函数
  2. MFC中,以Afx为前缀的函数都是全局函数,可以在程序的任何地方调用

MFC应用程序开发教程1相关推荐

  1. 基于VTK的MFC应用程序开发(3)

    基于VTK的MFC应用程序开发(3) 分类: VTK应用示例 2013-05-17 13:37 3307人阅读 评论(23) 收藏 举报 目录(?)[+] 之前介绍了基于VTK的单文档应用程序开发,并 ...

  2. 基于VTK的MFC应用程序开发(2)

    基于VTK的MFC应用程序开发(2) 分类: VTK应用示例 2013-03-29 13:03 6647人阅读 评论(18) 收藏 举报 MFCVTK图像重采样 目录(?)[+] 现在基于VTK的MF ...

  3. 基于VTK的MFC应用程序开发(1)

    基于VTK的MFC应用程序开发(1) 分类: VTK应用示例 2013-03-24 22:35 4195人阅读 评论(28) 收藏 举报 CMakeVTKMFC 目录(?)[+] 提到MFC一般都不陌 ...

  4. 微信小程序开发分销制度济南_花店微信小程序开发教程

    如何将自己的鲜花商品快速配送出去,避免鲜花过期浪费,是很多传统花店商家的难题.不过随着微信小程序的出现,这一难题也渐渐得到了解决.花店商家可以通过自己的小程序商城,打通线上渠道,可以加大推广.扩大销量 ...

  5. 微信小程序开发教程第七章:微信小程序编辑名片页面开发

    前面我们更新了六篇的微信小程序开发教程,现在更新第七章:微信小程序编辑名片页面开发,(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程 ...

  6. 微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现

    接着上面微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现.(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程序名片夹详情页开 ...

  7. 小程序开发用什么编程语言_微信小程序开发教程是什么?费用多少?

    微信小程序如今已经非常常见,渗透到了我们日常生活的方方面面,包括生活服务.出行.点餐.电商购物.企业展示--商家可以开发适合自己行业的小程序,以吸引线上用户,同时提高自身服务运营效率.不过这些不同种类 ...

  8. 小程序开发教程,适合小白哦

    近年来,小程序开发的浪潮很流行,小程序的爆炸性增长,无论是各种工具类别的小程序,还是购物中心类别的小程序,都在不断涌现.小程序使我们的生活更加方便,同时为各种在线和线下商店创造了一个良好的营销环境.那 ...

  9. 微信小程序开发语言(微信小程序开发教程)详细步骤

    微信小程序开发语言 开发微信小程序用什么语言 1.微信小程序开发所需要的语言比较特别,首先介绍一下需要使用到的文件类型大致分为:WXML(WeiXin Mark Language 微信标记语言).WX ...

最新文章

  1. Windows域信任关系建立全攻略
  2. Python读取PDF内容
  3. double 直接舍去 保留两位小数
  4. NIO详解(五):Buffer详解
  5. 23天的单车旅行,从广州到四川,篇首语
  6. RabbitMQ Network Partitions 服务日志对比
  7. 第25月第2天 Django-By-Example项目记录01
  8. 自定义request链路跟踪
  9. php监控nginx,zabbix php nginx 监控搭建
  10. IBM X3650 M4服务器使用U盘重装系统教程
  11. python自动修图软件_Ai修图软件|Ai修图神器SC-FEGAN下载(人脸照片涂鸦编辑) 免费版_数码资源网...
  12. php高效率敏感词屏蔽,高效的敏感词过滤方法(PHP)
  13. 【Win10】使用“Windows照片查看器”查看照片
  14. VScode插件Markdown Preview Enhanced自定义字体style
  15. win7台式计算机型号怎么查,教您电脑主板型号怎么看
  16. C语言取得int的位数
  17. 扯淡之——世界上先有鸡还是先有鸡蛋
  18. php 搜索引擎 分词_PHP 实现中文分词搜索功能
  19. ckc交易什么意思_股票熔断是什么意思啊?熔断机制对股民的影响有那些
  20. PHP 判断字符串长度及字符串切割问题

热门文章

  1. 行业分析报告|射频人体轮廓仪市场现状及未来发展趋势
  2. Require.js总结
  3. 阿里云卡片式硬件终端ASC01使用体验
  4. 计算机专业要求特质,计算机专业特点的六种解读.pdf
  5. jsp+ssm计算机毕业设计干果在线销售系统设计【附源码】
  6. 面向过程与面向对象编程实例
  7. 《Vue.js实战》读书笔记
  8. 【Dart 教程系列第 40 篇】Dart 之 trim,trimLeft,trimRight 字符串去除空格
  9. (附源码)计算机毕业设计Java城市道路智能停车管理系统
  10. java发言_一次发言稿丶Java教程网-IT开发者们的技术天堂