浅析MFC程序的基本运行机制.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
--(完美WORD文档DOC格式,可在线免费浏览全文和下载)值得下载!

浅析MFC程序基本运行机制 或许我不该写这篇文章;或许你会不屑的看了看标题,然后华丽的WS之;又或许你会在看完之后,在这篇文章的末尾的写上“打倒KC,打倒MFC,打倒M$”,然后签上自己伟大的名字。 但是这都丝毫不会影响包括我在内的所有想了解MFC的Coder对于MFC研究。或许,有好几个问题曾连续地在你的脑海里浮现: MFC很容易学么?是的,很容易。但是前提是你首先得理解他的源代码,并且看懂背后的故事。 MFC很复杂么?是的,以MFC4.X来说,仅是一个单独的源文件都有超过120000行的代码,这还不算头文件和.H扩展文件。 MFC很强大么?是的,它不仅能让你更加了解Windows系统的运行机理,还能让你从传统SDK的束缚中解脱出来。 MFC很恶心么?是的,它会时常让你感到,不是你在控制MFC,而是MFC在控制你 MFC很完美么?没有完美的思想,也没有完美的程序。从产生人类文明至今,尚未出现真正称得上“完美”的东西。因为我们在进步,在革命。 …… 常言道:知己知彼,百战不殆。如果你真的决定使用MFC,那么你就应该好好的研究它的内部运行机制。这不是关键性的,但是是必要性的。 而这篇文章,就向大家展示了MFC程序的基本运行机制。 温故知新 在研究MFC的基本运行机制之前,先让我们来回忆一下使用C++/SDK写Windows GUI程序的顺序: 调用WinMain入口函数→注册窗口类→窗口实例化→建立消息循环→处理消息 可以说,几乎每个Windows GUI程序的建立和运行,都要经过上面的几个步骤,MFC程序也不例外。但是由于MFC是以C++为基础,所以它势必会使用OOP思想进行架构。而这一切,都会导致我们研究MFC的方式会和C++/SDK有那么一点区别。 我们在下面会以MFC的Class为中心进行研究,而非Windows窗体的线性行为。这意味着我们得忍受在几个类中跳来跳去。是的,你可能会感到身体不适,我同样有这种感觉,我从小就恨透了goto…… 那么,就让我们先来看看使用MFC改如何创建一个简单的窗体,然后在逐步抽丝剥茧,剖析MFC程序的基本运行机理。 /************************************************** **?Project:MFCAppUser **?File:MFCAppUser.cpp **?Edition:NULL **?Coder:KingsamChen?[MDSA?Group] **?Last?Modify:2008-8-9 **************************************************/ #include?afxwin.h??//?必备的头文件,这个头文件间接包含了windows.h class?CMFCApp?:?public?CWinApp??//?继承CWinApp { ??public: ????virtual?BOOL?InitInstance();??//?虚函数 ??????????????????????????????????//?这个函数必须重写 }; class?CMFCAppWindow?:?public?CFrameWnd { ??public: ????CMFCAppWindow()??//?在构造函数里创建窗体~ ????{ ??????Create(NULL,KCs?Windows);??//?除前两个参数外,其他参数均有初始值 ????} ????//?下面是消息映射的东东 ????afx_msg?void?OnLButtonDblClk(UINT?nFlags,?CPoint?point);??//?左键双击的消息声明 ????afx_msg?void?OnPaint();??//?WM_PAINT消息声明 ????DECLARE_MESSAGE_MAP()??//?消息映射宏 }; //?MS叫做消息映射表 BEGIN_MESSAGE_MAP(CMFCAppWindow,?CFrameWnd) ??ON_WM_LBUTTONDBLCLK() ??ON_WM_PAINT() END_MESSAGE_MAP() //?对应的消息处理,类似SDK窗体里面的回调函数处理过程 void?CMFCAppWindow::OnLButtonDblClk(UINT?nFlags,?CPoint?point) { ??MessageBox(KC?is?a?Fucker,?NULL,?MB_OK); } void?CMFCAppWindow::OnPaint() { ??CPaintDC?Paint(this);

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档