MFC 运行过程(摘录)

原创 2007年10月14日 10:07:00
MFC 运行过程(摘录)
程序的诞生
*Application object 产生,内存于是获得配置,初值亦设立了

*AfxWinMain 执行AfxWinInit,后者又调用AfxInitThread,把消息队列尽量加大到96

*AfxWinMain 执行InitApplication。这是CWinApp 的虚函数,但我们通常不改写它

*AfxWinMain 执行InitInstance。这是CWinApp 的虚函数,我们必须改写它

*CMyWinApp::InitInstance 'new' 了一个CMyFrameWnd 对象

*CMyFrameWnd 构造函数调用Create,产生主窗口。我们在Create参数中指定的窗口类是NULL,于是MFC 根据窗口种类,自行为我们注册一个名为"AfxFrameOrView42d" 的窗口类

*回到 InitInstance 中继续执行 ShowWindow,显示窗口

*执行 UpdateWindow,于是发出WM_PAINT

*回到AfxWinMain,执行Run, 进入消息循环

程序开始运行
*程序获得WM_PAINT消息(藉由CWinApp::Run中的::GetMessage循环)

*WM_PAINT经由::DispatchMessage 送到窗口函数CWnd::DefWindowProc中

*CWnd::DefWindowProc将消息传递过消息映射表格(Message Map)

*传递过程中发现有相符项目,于是调用项目中对应的函数.此函数时应用程序利用BEGIN_MESSAGE_MAP和END_MESSAGE_MAP
之间的宏设立起来的

*标准消息的处理程序亦有标准命名,例如WM_PAINT必然由OnPaint处理

程序的结束
*使用者单击 File/Close 发出WN_CLOSE

*CMyFrameWnd 并没有设置WM_CLOSE处理程序,于是交给默认的处理程序

*默认函数对于WN_CLOSE的处理方式是调用::DestroyWindow,并因而发出WM_DESTROY

*默认的WN_DESTROY处理方式是调用::PostQuitMessage,因此发出WM_QUIT

*CWinApp::Run收到WM_QUIT后会结束其内部之消息循环,然后调用ExitInstance,这是CWinApp的一个虚拟函数

*如果CMyWinApp改写了ExitInstance,那么CWinApp::Run所调用的就是CMyWinApp::ExitInstance,否则就是CWinApp::ExitInstance

*最后回到AfxWinMain,执行AfxWinTerm,结束程序 

摘录一个小故事

来自《重构与模式》,作者说他刚工作的时候,开发一套程序的过程中发现一个函数,名字是w44()。这位刚入行的程序员用了三个星期分析这个函数后才弄明白这个函数的功能是将返回的一个数字格式化为一个带逗号的字...
  • strawbear
  • strawbear
  • 2008-12-28 22:45:00
  • 353

MFC程序运行流程总结

  • 2011年12月04日 14:55
  • 68KB
  • 下载

MFC程序执行流程小结 [大三TJB_708]

半月多的从0开始的MFC学习总结          寒假来了,要开始涉及MFC程序了(2013-01-12),没有看过一天关于C++的书籍。我比较有勇气(当然是在有老师指导的情形下,老师常给予关键性的...
  • misskissC
  • misskissC
  • 2013-01-30 16:30:38
  • 5582

MFC 程序运行过程

为防止原文删除不可寻,转载仅供个人查阅。尊重原创,请看原文。 原址:http://dvwt.blog.163.com/blog/static/34325470200862945919293/ ...
  • baixue0729
  • baixue0729
  • 2016-01-10 20:39:39
  • 868

MFC窗口的关闭过程

OnOK(),OnCancel() OnClose(), EndDialog(), DestroyWindow(),OnDestroy(),OnNcDestroy(), 对非模态窗口,必须重载OnC...
  • mengyafei43
  • mengyafei43
  • 2013-09-15 20:05:28
  • 1101

MFC基于对话框工程运行逻辑

1、 2、 3、 4、 5、 6、 7、 8、 9、 10、
  • wwkaven
  • wwkaven
  • 2014-08-29 06:21:31
  • 1249

读《我的大学》摘录

1.“freshman” 小菜鸟 2.对事不对人,不必要刻意寻找知心朋友。 3.太好面子确实不是一件什么好的事情。 4.有工作使人快乐,思考,想象,心中有爱,这样就不会暴躁,克服你心中的暴躁,否...
  • wearlee
  • wearlee
  • 2017-07-20 22:14:08
  • 157

mfc学习之分析mfc程序执行过程

在前几天学习自己动手创建了一个mfc程序之后,生出了一个疑问,作为一个新手,在学习c++标准语法的时候,基本都是控制台程序,而且众所周知程序都会有一个入口点也就是main函数,而在mfc程序中,只是定...
  • zhengjuexi4456
  • zhengjuexi4456
  • 2016-07-06 19:43:31
  • 382

MFC程序的执行流程

一、WinMain()函数在哪儿 因为看不到WinMain()函数,许多初学者不知道程序究竟从哪儿开始,编程从哪儿下手,编写的代码何时运行等等,另外,还有很多看不懂的语句,最大的困难恐怕还是MF...
  • holandstone
  • holandstone
  • 2012-05-07 15:38:38
  • 6078

《假如给我三天光明》读后感及其摘录(1)

《假如给我三天光明》读后感 这本书由三部分组成,第一部分为海伦凯勒最为动人的生活情节与场景,即《我生活的故事》。这一部分介绍了自己的祖先的谱系家族,勾勒出一幅美妙的图画。从自己的生活中诞生的美丽却偏...
  • a1456123a
  • a1456123a
  • 2017-01-24 13:25:26
  • 547
收藏助手
不良信息举报
您举报文章:MFC 运行过程(摘录)
举报原因:
原因补充:

(最多只允许输入30个字)