- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有了一定的Windows32编程知识,就能学习MFC了。
在学习MFC之前,一定要弄明白Windows32编程中的消息循环是怎么回事。MFC实际上就是对Windows API函数的封装。
?
在Windows程序设计编程中,创建一个窗口要经历下面四个过程?(如有不懂,请看博客 win32初窥)
1设计一个窗口类;
2注册窗口类;
3创建窗口;
4显示及更新窗口。
?
同样,MFC中也是一样的。只是封装了而已,很多人认为MFC很难学,看着书本能编程序,但是却编写不了自己的程序,为什么呢?因为还没有理解MFC的原理的机制。
市场上有很多有关VC++的书本,但是很少有将MFC原理讲得比较透彻的,引用孙鑫老师的话。
同样的,WinMain也是入口函数,具体的过程,请看孙鑫视频20讲之第三讲
?
其中,孙鑫老师开始提出的一个问题是:
在全局变量中,定义一个子类对象。。。
[html]? \o view plain view plain? \o copy copy
#includeiostream??
#includestring??
using?namespace?std;??
??
class?Person??
{??
public:??
????Person?*p;??
????Person()??
????{??
????????p=this;//保存this指针??
????}??
????virtual?void?say()??
????{??
????????coutPersons?say()endl;??
????}??
??
};??
??
class?Student:public?Person??
{??
public:??
??????
????Student()??
????{??
??
????}??
????void?say()??
????{??
????????coutStudents?say()endl;??
????}??
??
};??
??
Student?s;??
??
int?main()??
{??
??????
????s.p-say();//这里将调用子类的方法??
????return?0;??
}??
?
什么都不用做,直接用向导生成一个MFC窗口。
下面是结构图,有五个类
是这样命名的,开头的C表示Class ,C+工程名+(App,Doc,View...)
其中CMainFrame表示一个窗口(主窗体,包括标题栏,菜单...),XXApp表示运用程序,XXDOC表示文档类(加载数据,实现数据的存储与操作分离),XXView也表示一个窗口(相当于Windows的客户区)
?
下面看看MFC中类的主要继承关系:
由于继承树太大,这里只罗列了CWnd的继承关系
?
?
API中CreateWindowEx和CreateWindow几乎是一样的,Ex表示扩展,多了一个参数
下面用API模拟CWnd
just模拟
[html]? \o view plain view plain? \o copy copy
//下面是模仿封装API函数??
??
class?CWnd??
{??
public:??
????BOOL?CreateEX(??
????????DWORD?dwExStyle,??????//?extended?window?style??
????????LPCTSTR?lpClassName,??//?registered?class?name??
????????LPCTSTR?lpWindowName,?//?window?name??
????????DWORD?dwStyle,????????//?window?style??
????????int?x,????????????????//?horizontal?position?of?window??
????????int?y,????????????????//?vertical?position?of?window??
????????int?nWidth,???????????//?window?width??
????????int?nHeight,??????????//?window?height??
????????HWND?hWndParent,??????//?handle?to?parent?or?owner?window??
????????HMENU?hMenu,??????????//?menu?handle?or?child?identifier??
????????HINSTANCE?hInstance,??//?handle?to?application?instance??
文档评论(0)