MFC vs. SDK程序流程
大家都知道,windows API编程以及其消息处理,其过程都清晰可见,大体步骤如下:
1)声明消息窗口类
2)注册窗口类
3)createwindows
4)消息获得以及分派(windows procedure)。
但是,对于MFC同样是Windows程序,其流程却显得灰暗不明。先具体分析(备录)如下:
在MFC中有两个重要的类,CWinApp,CFrameWnd,它们两个的存在在某种意义上来说代替了WinMain 和 WinProc的存在。
对于任何一个MFC程序,都存在一个Application Object(theApp),由于它是一个全局对象,因此是一个程序的入口点,当TheApp构造完了以后,由链接器将WinMain加入到应用程序中,它调用了AfxWinMain()函数。之后在AfxWinMain中,执行了AfxWinInit(),pApp->InitApplication(),pApp->InitInstance(), pApp->Run();AfxWinTerm();完成程序的整个过程。
关于 InitInstance: 首先,它会new一个CFrameWnd成员,其构造函数调用了Create();create()里面调用了createEx(),CreateEx()调用了PreCreateWindows();这里面MFC默认注册了5种类型的窗口类型(Wnd,controlbar, mdiframe, FrameOrView, OleControl)。
消息过程的流程:主要是调用AfxWndProc-〉AfxCallWndProc-> Wnd.WindowProc().这里其实是程序真正的处理过程,首先判断是否为WM_COMMAND消息;不是就按照通常的方法,进行处理(查找消息映射表,由宏建立起来的内存表),是就按照MFC规定的路线进行处理。CWnd::OnCommand()调用的是OnCmdMsg(),这里MFC规定了其消息的路线(view ,document,framewnd,winapp)。
转自:http://blog.csdn.net/ingor/article/details/2085736
MFC vs. SDK程序流程的更多相关文章
- VC++中操作XML(MFC、SDK)转
[转]VC++中操作XML(MFC.SDK) XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++ ...
- Linux服务器模型及其对应的程序流程
一.TCP循环服务器 TCP循环服务器一次只能处理一个客户端的请求,处理完成后,才能接受下一个客户端的请求,程序流程如下: socket(......);//创建套接字 bind(......);// ...
- [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套
一.运算符 算数运算符 +,-,*,/,%,++,-- 1.+,-,*,/ 整数除以整数的结果为舍弃了小数部分的整数. 2.%:取余 %左右都为正数,左边小于右边结果为左边值,如,4%5=4 %左边大 ...
- Java变量&&简单程序流程&&循环
变量:强类型局部变量: 1.先赋值,后使用 2.作用范围:从定义开始,到所在代码块结束 3.重合范围内不允许重复命名 数据类型(8中基本类型) byte 1B -128~127 short 2B -3 ...
- Java 基础 程序流程控制 (下)
Java 程序流程控制 (下) 此篇单独对循环结构的知识点进行整理: 之前讲到循环结构分为:for循环,while循环,do...while循环三种最基本的循环结构:在JDK1.5以后的版本还提供了f ...
- Java 基础 程序流程控制 (上)
Java程序流程控制 (上) Java程序大体分为三种流程控制结构:顺序结构.分支结构.循环结构 顺序结构 程序由上到下的逐行执行,中间没有任何跳转和判断语句. 示例代码如下: public clas ...
- Java基础之程序流程控制
Java中的程序流程控制 Java中的程序流程分为三种结构:①顺序结构:②分支结构:③循环结构 一.顺序结构 Java中定义成员变量的时候,采用的是前向引用,也就是后面的变量可以引用之前定义好的变量. ...
- 4. Scala程序流程控制
4.1 程序流程控制说明 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句,顺序控制,粉质控制,循环控制 温馨提示:Scala语言中控制结构和Java语言中的 ...
- 通过官方API结合源码,如何分析程序流程
通过官方API结合源码,如何分析程序流程通过官方API找到我们关注的API的某个方法,然后把整个流程执行起来,然后在idea中,把我们关注的方法打上断点,然后通过Step Out,从内向外一层一层分析 ...
随机推荐
- JS实现焦点图轮播效果
大家平时逛淘宝网的时候,在首页就能看到焦点图轮播的效果,就是这个样子的: PS:想起每每打开淘宝,总会被这个玩意先夺眼球,偶尔还去点进去溜溜,幸好我定力好,总能控制住自己的购买欲望,为自己不用剁手感到 ...
- Java序列化(Serialization)
关于Java的序列化的文章在网上已经够多了,在这里写关于Java序列化的文章是对自己关于这方面的的一种总结,结合以前的开发经验与网上的资料,写了这篇文章,对自己是有着巩固记忆的作用,也希望能够对大家有 ...
- [转] sql server 跨数据库调用存储过程
A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...
- Linux查看版本当前操作系统内核信息
1. # uname -a (Linux查看版本当前操作系统内核信息) 输出 Linux xxx --generic #~-Ubuntu SMP Wed Jul :: UTC x86_64 x86_6 ...
- js的数组与对象关系
有的时候总犯糊涂,不理解对象和数组的关系,转载一篇文章,深刻记忆一下 http://hi.baidu.com/samdan/item/05179313d1ee4b9e99ce3371 比如有一个数组a ...
- bzoj1211: [HNOI2004]树的计数 prufer序列裸题
一个有n个结点的树,设它的结点分别为v1, v2, …, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, …, dn,编程需要输出满足d(vi)=di ...
- 网络流量预测 国内外研究现状【见评论】——传统的ARIMA、HMM模型,目前LSTM、GRU、CNN应用较多,貌似小波平滑预处理步骤非常关键
Time Series Anomaly Detection in Network Traffic: A Use Case for Deep Neural Networks from:https://j ...
- LocalStorage漏洞分析
之前LocalStorage爆出过一个漏洞,使用Chrome打开这个网站:http://filldisk.com,会将磁盘空间给撑爆,而且Chrome还会Crash.除了FireFox之外,其他浏览器 ...
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- SharePoint 2013的100个新功能之网站管理(三)
一:跨网站发布 跨网站发布是SharePoint 2013的一个新功能,可以使用户跨网站集.Web应用程序甚至是场重用内容.该功能叫做跨网站发布功能.用户可以使用该功能在SharePoint 2013 ...