【精品论文】MFC源程序设计-计算机安全_6892.pdf

【精品论文】MFC源程序设计-计算机安全_6892.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC源程序设计-计算机安全 MFC源程序设计 MFC程序设计之来龙去脉 (MFC框架程序WINMAIN 函数分析),到后来就没有再管了,其实那只是冰山一角.具体 MFC是怎么运行的,还是没有交待清楚。 说明:1、本文作者在VS2003中跟踪代码,此代码为VS2003中拷贝,使用MFC7。 2、不同框架的MFC程序由所不同,本文以单文档为例。 3、本文读者需要有一定的SDK 的基础,不需要太多,至少知道它 的基本框架和来龙去脉即可! 4、文章只想起到说明作用,所以代码会有一些删除。 学MFC,竟然还不知道MFC 的MAIN 函数在什么地方?怎么运行的?实在不高明。 看过候捷(JJHOU)老师的 《深入浅出MFC》的,对它一定很熟悉。呵呵,本文是献给没 有看过那本书,但是又很希望学习MFC程序设计的朋友的。 (没有看过那本书的朋友还 不赶快去买?)其实本文,主要是对 《深入浅出MFC》第六章的一个总结和补充罢了! (本文有该书不同的地方,也有一些笔者自己的见解!) 言归正传。 假如你用AppWizard一步一步NEXT下来,然后在CLASSVIEW 中去找寻WINMAIN 函数, 那么你只有失望。MFC最大的特点是什么?封装!MFC 的确封装的太好了,以至于很多想 学习MFC 的人都望而却步。闲话少说,还是继续我们今天的话题,MAIN 函数!实话告诉 你吧,即使你搜索所有的MFC生成的文件,都无法发现WINMAIN 的字眼,那么它就近在 什么地方呢? 我相信你已经想到,MAIN 函数应该在主要的应用程序文件中。难道是 “您定义的程序 名.cpp”这个文件?不错就是它。再Crtl+F一下,看有没有我们要找的WINMAIN 函数? 看来你又要失望了,但是你注意有这样一句: ///////////////////////////////////////////////////////////////////////////// // The one and only CMyApp object CMyApp theApp; //本人建立的工程名为My。 是不是很特别,再注意一下那句注释 “The one and only CMyApp object”,每个应 用程序有且只用一个CMyApp对象。我想你应该想到了,WinMain函数每个程序也只能有 一个,那么这个全局对象跟WinMain函数肯定有莫大的关系?没错,相信你的直觉。 特别注意:深晓C++细节的人一定知道,全局对象优先于MAIN 函数执行的道理。如果 你不知道也没关系,那么我在这里告诉你: “全局对象优先于MIAN 函数执行,且构建于 栈中,切记,切记!” 现在,我们该深入WinMain运行机制了,确切的说,应该是MFC 的机制! 首先,看看MFC 的库文件把,它能给我们带来许多惊喜。 (vc6的相应的目录是 \Microsoft Visual Studio\VC98\MFC\SRC;VC7相应的目录是\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc) 现在我们就从这个全局下手,开始今天的旅途。 CMyApp theApp; 此时,系统会执行CMyApp 的父类 (CWinApp)构造函数,再执行CMyApp 的构造函数。 (先有老爹,再有儿子!),此时就会调用CWinApp 的构造函数。 CWinApp 的构造函数 (在VC提供的MFC代码中以“文中的一个字或词组”的方式查询 关键字,此时打开APPCORE.CPP,以下使用相同搜索方式,不再复述。)找到以下内 容: CWinApp::CWinApp(LPCTSTR lpszAppName) { if (lpszAppName ! NULL) m_pszAppName _tcsdup(lpszAppName); else m_pszAppName NULL; // initialize CWinThread state AFX_MODULE_STATE* pModuleState _AFX_CMDTARGET_GETSTATE(); AFX_MODULE_THREAD_STATE* pThreadState pModuleState-m_thread; ASSERT(AfxGetThread() NULL); pTh

文档评论(0)

183****9956 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档