谁看懂过MFC启动部分的。给我解释解释好不好。
一个“什么都不作的MFC程序”的启动过程分析如下:
1。声明全局变量theApp此实例名是规定的,但类是用户写的。继承自WinApp
2。执行用户类的构造函数,构造函数里。
SetRegistryKey(_T("Local AppWizard-Generated Applications")); //什么意思,做什么的?
LoadStdProfileSettings();//这个读取的是配置么?配置在哪
// Load standard INI file options (including MRU) 这个不明白
CSingleDocTemplate* pDocTemplate;//生成默认模板,按照单文档模板生成
//使用构造函数,按构造函数的参数,传递:菜单,文档类,框架类,主视图类
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,//菜单
RUNTIME_CLASS(CTestEnumDoc),//文档类,如果多个怎么办?
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestEnumView));//视图类,多个视图类呢?
//用的时候再看具体的调用和生成的生存期是么?
AddDocTemplate(pDocTemplate);//不懂,是个虚函数,我只管找也没找到函数体,可能应藏在Target类里了。反正看不到。这句什么意思?什么作用?
//运行参数
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo)) return FALSE; //不许不要参数,没参数就退出?
m_pMainWnd->ShowWindow(SW_SHOW);//显示模式,最小化,最大化,隐藏……
m_pMainWnd->UpdateWindow();//更新显示
return TRUE;//结束构造函数,进入连接的WinMain
之后,应该是被隐藏了的WinMain执行,这里执行似乎就到了我看书的尽头。因为WinMain里包含了消息循环,那么之后呢?程序运行到哪里去了?执行什么了?(似乎是个愚蠢的问题)
//自我理解:进入消息循环后,就不用逐句的按过程化的思路去读程序了。是看可能。比如,被遮挡,就会系统给我们的程序发送“无效”的函数,使程序需要执行OnDraw(),如果单击…… 等所有的执行顺序就不一定了。就看收到消息的顺序了。只要对可能的消息写好响应和相关代码了。
各位给我解答一下我上面没有理解的,和我理解对不对?感谢帮助我的高手和关心我学习的你。