首页 | 文章中心 | 下载中心 | 本站特供 | 软硬件结合论坛 | 软硬件结合博客 | 
您现在的位置: 中国软硬件结合技术网 >> 文章中心 >> 软件技术 >> C#技术 >> 正文 用户登录 新用户注册
[图文]MFC运行过程          【字体:
MFC运行过程
作者:未知    文章来源:    点击数:    更新时间:2005-9-22
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,结束程序 
文章录入:Polylove    责任编辑:Polylove 
  • 上一篇文章: 单片机

  • 下一篇文章: c语言在单片机开发中的应用
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
          最新热点       最新推荐       相关文章
  • 详细的的多线程!!!

  • MFC学习进阶06

  • 如何学好VC和MFC(各前辈学习…

  • 如何学好VC和MFC(各前辈学习…

  • 如何学好VC和MFC(各前辈学习…

  • 如何学好VC和MFC(各前辈学习…

  • 学习编译原理时做的词法分析…

  • 如何学好VC和MFC(各前辈学习…

  • Visual C++ MFC 简明教程(四…

  • Visual C++ MFC 简明教程(三…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)