今天下午气伤我了,这微软的VC怎么就不能学学SUN公司的java,自由度高些呢!!
原本打算自己实现下MFC的框架,但是很多东西都受限制,不得不放弃。。。。
首先是 Winmain函数,其次,向mainframe类进军。但是问题就在这里出来了,本想写个CFrmaeWnd的子类, 所以include"afxwin.h",它包含了CFrmaeWnd类的定义。
但是编译出错了,原因是不能重复包含"window.h",看下Stdafx.h,它也包含了window.h头文件。那我就打消写子类的念头,删了:public CframeWnd,但是问题又出来了-----已定义好的宏(用作定义消息响应函数的原型)又识别不了了,这我就没辙了,弄了我一下午,真郁闷!!!
吃饭时仔细想了遍,这就是编译时将同一个cpp文件多编译遍,立马就清醒过来:用ifndef....define.....endif 预编译就能解决。饭后,立马回研究生院,将类分成了两个文件(.cpp和.h),在头文件上进行预处理后,在主文件中包含.h后就大功告成了。
但是新的问题出来了,在createWindow时老是弹出异常,仔细检查后发现是wndclass中的hicon赋值错了,将不存在的icon资源的ID送了进去。最后一切都好了....
但是唯一遗憾的是没有在自己的MFC中实现微软MFC中的消息映射,要继续努力!
打开预置的HelloWorld WIN32程序可以发现,对菜单项wm_command消息的响应还是通过窗口过程 switch..case来处理,这方面确实比JAVA麻烦多了.....微软以前真小气!