MFC是如何运行的 并且创建窗口 代码解析
mfc没有入口函数但是是怎样运行并且启动起来的呢?
针对这个问题我们可以用断点调试方法来看一看 程序是怎样启动的 每个部分是做什么用的
入口函数还是winmin 只不过都封装在类中去调用
mfc程序执行过程
程序启动调用mfc框架提供的winmain函数在函数中又调用AfxWinMain函数
获取theapp的地址并保存到 pThread和pApp中
框架的内部初始化和应用程序的全局初始化
通常重写该函数 完成用户特定的初始化操作 我们主要创建一个基本窗口
调用run函数消息循环 点击关闭按钮 产生wm_quit消息调用ExitInstance()函数 释放和清理资源
AfxWinMain函数返回
// 1. mfc框架提供的入口函数
WinMin(...)
{
AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
{
//1.1获取theapp的地址并保存到 pThread和pApp中
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp();
//1.2框架的内部初始化和应用程序的全局初始化
AfxWinInit(...);
pApp->InitApplication();
//1.3 通常重写该函数 完成用户特定的初始化操作
pThread->InitInstance()
{
//用户代码 创建基本的窗口程序
return TRUE;
}
1.4 消息循环
pThread->Run(); --虚函数2
{
CWinThread::Run()
{
for (;;)
{ //1.4.1 空闲处理 当消息队列中没有消息时做空闲处理
while (bIdle &&!::PeekMessage(&(pSt