关于mfc中winmain函数调用initinstance()的代码问题?

initinstance()函数部分代码如下:
CCommandLineInfo cmdInfo;//定义命令行
ParseCommandLine(cmdInfo);//解析命令行

// 调度在命令行中指定的命令。如果
// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
if (!ProcessShellCommand(cmdInfo)) //程序启动时创建新文档
return FALSE;
// 唯一的一个窗口已初始化,因此显示它并对其进行更新
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
这里我不理解的就是,到m_pMainWnd->ShowWindow(SW_SHOW)这一句唯一的一个窗口已经初始化,按说窗口初始化应该调用createwindow函数啊,这样的调用我怎么没看见呢
再问一个问题,createwindow函数既然要创建一个窗口,一个窗口是由视图类对象、文档类对象、框架类对象有机的结合在一起形成的,createwindow()函数是如何把它们联系在一起的啊,在createwindow()函数的那些参数当中没有体现出任何这样的信息啊
谢谢指导,我是C++mfc的初学者

婷婷同学_
浏览 831回答 2
2回答

慕森卡

CMultiDocTemplate* pDocTemplate;pDocTemplate = new CMultiDocTemplate(IDR_TESTMFTYPE,RUNTIME_CLASS(CTestmfcDoc),RUNTIME_CLASS(CChildFrame), // custom MDI child frameRUNTIME_CLASS(CTestmfcView));AddDocTemplate(pDocTemplate);// create main MDI Frame windowCMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame->LoadFrame(IDR_MAINFRAME))return FALSE;m_pMainWnd = pMainFrame;在你所写代码上面,有这些代码,这是创建主窗口和MFC模式模板的代码,取代了createwindow但作用相同(内部代码是一致的),这种模式在非MFC框架下不能使用。

MMMHUHU

CCommandLineInfo cmdInfo;//定义命令行ParseCommandLine(cmdInfo);//解析命令行的上面还有代码CSingleDocTemplate对象负责管理视图类对象、文档类对象、框架类对象。这三个对象是在CSingleDocTemplate里创建和管理的。createwindow函数也有,被深度包装到MFC源码里了,你可以点调试,单步跟踪来看,要跟进去才能看到。调试-逐语句执行。初学者先学会使用MFC再剖析MFC源码,可以看下《深入浅出MFC》
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby