zoukankan      html  css  js  c++  java
  • VC++学习笔记之MFC应用程序创建/执行顺序和MFC运行机制

    1、Win32应用程序创建:进入WinMain函数、设计窗口类、注册窗口类、产生窗口、注册窗口、显示窗口、更新窗口,进入消息循环,将消息路由到窗口过程函数中。
    2、WinMain函数的执行(AfxWinMain函数):当程序调用了CWinApp类的构造函数,并执行了CTestApp类的构造函数,且产生了theApp对象之后,接下来就进入WinMain函数。WinMain函数实际上是通过调用AfxWinMain函

    数来完成它的功能的。
    3、窗口初始化(InitInstance函数):窗口初始化。
    4、设计和注册窗口(AfxEndDeferRegisterClass函数和AfxRegisterClass函数):有了WinMain函数就应该设计和注册窗口了。
    5、创建窗口(CreateEx函数):该函数位于AFXWin.h文件中。
    6、显示窗口和更新窗口(ShowWindow方法和UpdateWindow方法):这两个方法位于App类的InitInstance函数。
    7、消息循环(CWinThread类的Run函数):该函数在AfxWinMain函数中调用。pThread->Run();
    8、窗口过程函数:wndcls.lpfnWndProc=DefWindowProc;
    通过1~8总结一下MFC运行机制:
    1、利用全局应用程序对象theApp启动应用程序。产生全局对象,使之可以使用this指针。
    2、调用全局对象的构造函数,其实先调用的是基类的构造函数,完成一些初始化工作,并将应用程序对象的指针保存起来。
    3、进入WinMain函数。通过AfxWinMain函数获取子类指针,调用虚函数:InitInstance。在“InitInstance”函数中,完成应用程序的一些初始化工作,包括窗口的注册、创建、显示和更新。
    4、进入消息循环。虽然设置了默认的窗口过程函数,但是MFC应用程序实际上采用消息映射机制来处理各种消息的。当收到WM_QUIT消息时,退出消息循环,程序结束。

    朋友,如果您有什么真知灼见,可以加“新浪微博”/MSN哦,starrycheng@live.com,我们大家一起讨论,一起研究。

    最后,帮忙加一分吧,想整个空间系统。

  • 相关阅读:
    Bootstrap使用
    Gulp
    Less和Sass
    ECMAScript6语法重点(二)
    deepin scrot-- linux下的截图工具
    iframe获取父、子窗口的方法
    测试总结--同步或异步处理过程中常见的问题
    测试总结--兼容性
    测试总结--时间/金额类字段需要关注的点
    测试总结--系统调用链路发生变更,如何评估测试范围
  • 原文地址:https://www.cnblogs.com/ssol/p/2258936.html
Copyright © 2011-2022 走看看