// 1. MFC框架提供的入口函数
WinMain(...)
{
AfxWinMain(...)
{
// 1.1 获取theApp地址,并保存在pThread和pApp中
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp();
// 1.2 AFX的内部初始化和应用程序的全局初始化
AfxWinInit(...);
pApp->InitApplication();
// 1.3 通常重写该函数,完成用户的特定的初始化操作
pThread->InitInstance(); --- 虚函数1
{
// 用户代码,创建基本的窗口程序
return TRUE;
}
// 1.4 消息循环
pThread->Run(); --- 虚函数2
{
CWinThread::Run();
{
for (;;)
{
// 1.4.1 在消息队列中没有消息,作空闲处理
while(!::PeekMessage(...))
{
OnIdle(...); --- 虚函数3
}
// 1.4.2 在消息队列中有消息,获取、翻译和派发消息
do
{
PumpMessage();
{
AfxInternalPumpMessage()
{
::GetMessage(...);
::TranslateMessage(...);
::DispatchMessage(...);
}
}
// 退出时,调用ExitInstance函数,作善后处理
return ExitInstance(); --- 虚函数4
}while(::PeekMessage(...));
}
}
}
}
}