在了解完Windows程序(mfc)的基本架构之后,现在让我们来大体的回顾一下Windows程序的运行的流程:

1:程序初始化,初始化过程中调用CreateWindow()为程序建立一个窗口并发送消息WM_CREATE直接给窗口函数(该消息将会引起一些初始化的工作,例如:配置内存,打开文件,读初始化数据等等),并通过ShowWindow()来显示窗口。

2:在程序的执行的过程中,程序会不断地以GetMessage从系统消息队列中抓取消息,如果这个消息是WM_QUIT , GetMessage 会传回0而结束while循环,进而结束整个程序

3:通过Windows的USER模块的协助与监督分发消息,将消息分派至窗口函数,消息将在此处被判别并处理

4:程序不断循环2->3的操作

5:当使用者按下窗口的关闭命令项的时候,系统会送出消息WM_CLOSE,通常程序的窗口函数不拦截此消息,于是DefWindowProc处理它。

6:DefindowProc 收到消息 WM_CLOSE 后,调用DestoryWindow 把窗口清除。DestoryWindow本身又会送出 WM_DESTROY。

7:程序对 WM_DESTORY 的标准反应是调用PostQuitMessage .

8:PostQuitMessage 没什么其他操作,就只送出WM_QUIT 消息 ,准备让消息循环中的GetMessage 取得 ,如步骤2,结束消息循环

至于为何结束程序的操作如此繁琐,因为操作系统与应用程序职责不同,2者互相合作, 各自处理自生的事件,并以消息互相通知,而不可能系统还耦合我们开发的程序,做一个小实验,直接拦截WM_DESTORY ,我们仍然可以看到窗口消息,但是程序并不会中止,还保留在内存中,所以我们需要多步操作达到整个程序的结束,而这个过程中就涉及到不断的发送消息完成这多步操作,最后奉上示意图(图是盗的。。。汗):

深入浅出MFC:Windows程序的生与死相关推荐

  1. Windows编程 Windows程序的生与死(下)

    再谈程序之"死" 记得在第二回中我对程序的"死"只是一句话带过,因为我还没有铺垫好,好了现在我们可以详细的分析一下这个过程了. 这还要从while消息循环说起, ...

  2. Windows编程 第四回 Windows程序的生与死(下)

    致歉 很抱歉,读者看到的这篇文章将是我写的最没什么条理的一篇了,由于这一块儿内容是所有Windows程序的核心与基础,所以我分了三回来写.我想讲 得既易懂有又丰富,无奈本人才疏学浅,每每一提笔就要查很 ...

  3. Windows程序的生与死

    Windows程序分为"程序代码"和"UI资源"两大部分最后以RC编译器整合为一个完整的EXE档案. "以消息为基础,以事件驱动(message ba ...

  4. Windows 程序的生与死----FROM 侯俊杰

    个人感觉比孙鑫讲的要简单,孙鑫讲的有点多了,理解不如候俊杰讲的~~~ 1. 程序初始化过程中调用CreateWindow,为程序建立了一个窗口,做为程序的萤幕舞台.CreateWindow 产生窗口之 ...

  5. Windows程序的窗口和消息 -- 一个Windows程序从生到死

    注:以下内容为学习笔记,多数是从书本.资料中得来,只为加深印象,及日后参考.然而本人表达能力较差,写的不好.因非翻译.非转载,只好选原创,但多数乃摘抄,实为惭愧.但若能帮助一二访客,幸甚! 1.一个完 ...

  6. VS2010/MFC对话框程序调用Windows Media Player播放器控件

    MFC对话框程序调用Windows Media Player播放器控件播放打开的avi格式的文件,具体步骤如下: 1.根据MFC向导提示,创建一个默认的对话框项目TestMediaPlayer. 2. ...

  7. MFC Windows 程序设计[319]之渐变标题栏程序(附源码)

    MFC Windows 程序设计[319]之渐变标题栏程序 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 MFC是微软公司提供的一个类库(class libraries) ...

  8. 深入浅出MFC学习笔记(第6章 :MFC程序的生死因果)

    第六章:MFC程序的生死因果 本章主要是从MFC程序代码中,找出一个windows程序原本该有的程序入口点.窗口类注册.窗口产生.消息循环.窗口函数等操作.抽丝剥茧彻底理解一个MFC程序的诞生与结束. ...

  9. Win32程序开发流程--《深入浅出MFC》

    Windows程序分为2部分:程序代码 + UI资源. 这2部分最后以RC编译器整合为一个完整的EXE档案. UI资源的实际内容是借助各种工具产生的,如.ico  .bmp  .cur文件等. 程序员 ...

  10. MFC程序需要的函数库及头文件--《深入浅出MFC》

    Windows程序调用的函数可分为2部分:C Runtimes + Windows API. C Runtimes: LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LI ...

最新文章

  1. 量子力学 一 基础1 角动量
  2. Spring Boot学习笔记-实践建言
  3. [SDOI2015]星际战争
  4. 水晶报表-横向设计页面,设置网格高度
  5. 用ArrayList作数据源为ComboBox绑定,带“请选择...”
  6. AOP 中必须明白的概念-切面(Aspect)
  7. WiFi 热点共享设置
  8. java面试题三十 public,private,protected,default访问权限
  9. c#中将WM_CLOSE消息发送到没有窗口的进程的方法
  10. 面试官竟让我用Redis实现一个消息队列!
  11. Python编程中一定要注意的那些“坑”(一)
  12. ajax/test1.txt,ajax原生请求方法.txt
  13. java jdbc 详解_JDBC详解
  14. 蓝桥杯 ALGO-50 算法训练 数组查找及替换
  15. Linux下TCP网络服务器实现源代码3
  16. Druid连接池jar包的下载 配置和简单使用
  17. Hinton NIPS2017 手写识别实现 TensorFlow \ Pytorch \ Keras
  18. 用Python画漂亮的专业插图 ?So easy!
  19. WPS2019 For Ubuntu
  20. Struts2 入门学习总结一

热门文章

  1. related_name
  2. 从网络中获取债券收益率数据
  3. 有道云笔记怎么保存html文件,有道云笔记如何保存网页有道笔记保存页面教程...
  4. react项目-uncaught at check call: argument fn is undefined
  5. [BZOJ]4699: 树上的最短路 特殊技巧的最短路
  6. hdu 4699 模拟栈
  7. 学物理考研计算机,专业选择:物理学专业考研方向总结
  8. 计算机 玩体感游戏,电脑也能玩体感游戏了 微软推出Windows版Kinect
  9. 微型计算机主机的主要部件,微型机主机的主要部件
  10. facebook登陆,如何邀请玩家成为测试人员