欢迎来到天天文库
浏览记录
ID:39466193
大小:49.00 KB
页数:9页
时间:2019-07-04
《MFC单文档视图穷追猛打》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MFC单文档视图穷追猛打目录第一章找回WinMain函数 2第二章InitApplication()函数 2第三章InitInstance()函数 3第一节:newCSingleDocTemplate 3第二节:AddDocTemplate(pDocTemplate); 5第三节:ProcessShellCommand(cmdInfo) 5第一段AfxGetApp()->OnCmdMsg(…) 6第二段OnFileNew(); 6第四节:m_pMainWnd->ShowWindow(SW_SHOW);///显示窗口 8第五节:m_pMainWnd-
2、>UpdateWindow();///重画窗口 8第四章pApp->Run函数 8第五章总结 8 本文将针对一个单文档来描述MFC的文档/视图结构,他直接打开MFC的源代码进行分析,在分析过程中去掉了无关的部分。所以第一步就是要创建一个称为First得工程,文档类型是单文档,下文将围绕这个工程来讲的。第一章找回WinMain函数首先在VC的安装路径中找到WINMAIN.CPP文件,AfxWinMain函数就是VC编译器的入口,去掉一些不重要的东西后得到如下得程序。intAFXAPIAfxWinMain(HINSTANCEhInstance,HINS
3、TANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){intnReturnCode=-1;CWinApp*pApp=AfxGetApp();///获取应用程序类的指针与文档视图无关。AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow);///与文档视图无关。pApp->InitApplication(); ///初始化应用程序详见下文。pApp->InitInstance(); ///最重要下面祥述nReturnCode=pApp->Run();
4、///消息循环直到应用程序被关闭。与文档视图无关。AfxWinTerm(); ///与文档视图无关。returnnReturnCode;///整个应用结束。}下面分节讲述。第二章InitApplication()函数在文件Appcore.cpp文件中InitApplication如下:BOOLCWinApp::InitApplication(){ if(CDocManager::pStaticDocManager!=NULL) ///这段和我们关系不大,暂时不理它 { if(m_pDocManager==NULL) m_pDocMa
5、nager=CDocManager::pStaticDocManager; CDocManager::pStaticDocManager=NULL; } if(m_pDocManager!=NULL) m_pDocManager->AddDocTemplate(NULL); else CDocManager::bStaticInit=FALSE; /*我们的程序将会执行到这句,表示文档类用动态方式创建,也就是说用RUNTIME_CLASS来创建的(详见下文)。*/ returnTRUE;} 说明:CDocManager类是一个不公开的类,他主
6、要用来管理多文档模板对象的,对于单文档只有一个文档模板这个类不是很重要,但还是用它管理文档模板的;本文只在相关之处作说明。bStaticInit是它的一个静态成员。第三章InitInstance()函数 它一般被重载,在First工程中,InitInstance中和文档视图类有关的程序有下面的一些: CSingleDocTemplate*pDocTemplate; ///定义指针 pDocTemplate=newCSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CFirstDoc), RUNTI
7、ME_CLASS(CMainFrame), RUNTIME_CLASS(CFirstView)); ///这条语句的作用见第一段 AddDocTemplate(pDocTemplate); CCommandLineInfocmdInfo; ///定义一个对象 ParseCommandLine(cmdInfo); ///解析命令行并发送参数,与文档视图无关 if(!ProcessShellCommand(cmdInfo)) ///这是最重要的详见的三段 returnFALSE; m_pMainWnd->ShowWindow(SW_S
8、HOW); ///显示窗口 m_pMainWnd->UpdateWindow();第一节:newCSingleDo
此文档下载收益归作者所有