VC++窗口创建流程(调试解析).pdfVIP

  • 2
  • 0
  • 约1.04千字
  • 约 13页
  • 2017-08-31 发布于天津
  • 举报
VC++窗口创建流程(调试解析).pdf

VC++程序流程详解 跟着图走,可以加断点,一边看一边调。 theApp 的产生如Step1-Step6 所示。对于这个全局对象,每一个MFC 应用程序都有一个,而且也只有这么一个, 当执行程序时,这个全局对象产生,于是构造函数执行起来,产生了该对象。如果程序不提供该对象的存在,编译链 接还是可以顺利通过,只是执行的过程中会产生系统错误消息。Step1:CObject 的定义 Step2:CCmdTarget 的派生 Step3:CWinThread 的派生 Step4:CwinApp 的派生 Step5:CxxxApp 的派生 Step6:theApp 的产生 当theApp 这个全局变量构造完成以后进入主函数AfxWinMain WinMain ,_tWinMain 主函数的定义(其实它是AfxWinMain ()函的数返回值) 也就是说,函数的最终主入口为AfxWinMain( ) AfxWinInitAFX 内部初始化操作 进入WinMain 函数的InitApplication 函数,由于不需要改写该虚函数,所以实际调用的是CwinApp::InitApplication( ) 由于程序改写了InitInstance( )函数,所以调用程序自己的实例化函数 在实例化的过程中注册窗口类,注意:本实例化程序没有创建新的框架类窗口,所以Windows 自己创建默认窗口。 调用CreateEx ()函数,我不知道它为什么会有调用Create ()之前就开始调用CreateEx ()了。 这个地方才调用Create( )函数,CreateEx( )函数在这个地方才会被调用,以便调用CreateWindow ()函数来创建窗口。 调用PreCreateWindow () 下面这步没测试,不过看到了就加过来了 默认窗口创建完成,程序回到实例化程序中,对窗口进行设置、显示、更新。 进入Run( ) 函数,但是由于Run( )是CWinApp 的一个虚函数,我们并没有改写它,所以调用CWinApp ::Run( ) CWinApp ::Run( )又调用CWinThread::Run( ) 进入消息循环 传递消息,分派消息。

文档评论(0)

1亿VIP精品文档

相关文档