MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(03)

时间:2022-04-29 17:20:59

1.3.2 MFC如何使用应用程序对象

MFC程序没有main函数,没有WinMain函数,到底是什么启动了程序的运行?

一个MFC提供的源代码中(Winmain.cpp)包含了一个AfxWinMain函数,它在MFC中相当于WinMain。AfxWinMain广泛使用应用程序对象,因此在应用程序对象必须作全局声明的原因。全局变量和对象在任何其它代码执行之前被创建,在AfxWinMain运行之前,应用程序对象必须在内存中存在。

运行的顺序:

  1 AfxWinMain调用AfxWinInit函数初始化主框架

  2 AfxWinMain的函数参数(hInstance、nCmdShow)复制给应用程序对象的成员函数

  3 AfxWinMain调用InitApplication和InitInstance

  4 AfxWinMain调用应用程序对象的Run函数,该函数执行消息循环并开始向应用程序发送消息

  5 消息循环重复执行,直到WM_QUIT跳出循环,调用ExitInstance,返回到AfxWinMain中

  6 执行清理工作,AfxWinMain执行return结束应用程序