通常而言,一个类是对应一个窗口模板的,可是很多情况下,我们所需要的窗口都基本类似,可是又不完全相同,用同一个类吧,可是某些标志,比如窗口名,菜单.控件个数有不相同,定义多个类,又显得重复累赘,效率低下.
后来,我就在实验,同一个类,分别映射多个窗口. 【程序编程相关:新手必学:windows网络编程经典入门】
如何才能使得同一个类,满足多个不同窗口的需求呢! 刚开始我考虑使用一个共同的基类,包含各窗口都需要的功能函数,然后每个窗口都继承它,在自身类里面做一些必要的修改.可是实践过程中,我发现这个主意并不妙,如果做一个虚基类,各自继承,对于这种大部分操作都靠按钮.鼠标.键盘.菜单的窗口来说,意义并不大.然后我直接做了一个从cdialog继承下来的窗口,再让各个所需窗口继承它.然后在程序运行后,动态更改窗口标题,动态加载菜单项,隐藏与增加某些控件,可是那些消息映射并不能继承(因为它们是一系列宏,不属于程序的范畴,自然无法继承),而且动态隐藏控件还好些,可是动态增加控件就不太容易了,第一个是各个窗口大小可能不一样,排版布局上,就要累坏人!第二是,很多控件使用程序create,烦杂的参数,也要让熟悉了可视化编程的我们头痛! 【推荐阅读:连接浏览器SHELL窗口的代码】
对于非模式对话框,同一个类,映射多个窗口相对来说,要容易些,只要在它的构造函数定义如下: 【扩展信息:获取Divx的版本号(测试中)】
这种方法,我以前并没有看到别人使用过,到最后,我才意识到,这种技巧,虽然可以节省代码,但维护效率太高,而且不易移植,并没有我刚设想的时候,那么完美,除了c++,vb.c#可不支持这种技巧.
test::test(cruanjian2dlg* parent,int i){ m_hicon = afxgetapp()->loadicon(idi_icon1+i);dlgid=i;
m_parent=parent;
... 下一页