关于共用问题
admin 发表于 2010-08-28 | 来源:互联网 | 阅读:

我这里有个Ctrl类。想重用。
但是里面很多都是CIparentDlg* p = (CIparentDlg*)GetParent();
然后调用p的函数。

我可以在新的工程中添加之前p的那些函数。

但是它的引用了CIparentDlg.h,另一个工程用的话肯定要引用其他的头才行。

我想把这个Ctrl类放在公共代码里,在不同的工程里重用,应该怎么改进呢?

已经有7 个评论
  1. 萌芽邪恶 说:

    把类似这种地方按消息的方式处理然后发消息给父窗口这样只需要一个句柄就可以了

  2. sbamd 说:

    CIparentDlg* p = (CIparentDlg*)GetParent();–把这里获取父窗口的指针作为Ctrl类的一个参数传递进来,调用Ctrl类的,需要自己传入指针,Ctrl内部就可以直接使用获得的p来调用

  3. forestyaser 说:

    看糊涂了已经~

  4. 风子 说:

    多重继承试试看

  5. dovemail 说:

    既然你的这个Ctrl要做成通用控件,而你在这个Ctrl的内部又要调用到父窗口的一些属性或函数,那么就是说:只有满足一定条件和特性的父窗口,才能使用你的这个控件,而并不是任意一个通用窗口都可以。从这一点来看,你显然应该从通用窗口中派生出一个新的窗口类,并且这个新的窗口类与你的那个Ctrl放在一起,也作为通用代码的一部分来看待,因为只有属于那个新窗口类(或者其派生类)的窗口,才能够使用那个控件。这样,你的代码不仅逻辑清晰,而且别人使用你的这个控件的时候也会知道该怎么做,不会出现像“把这个控件放在一个普通窗口(没有特殊特性)内,结果控件不工作,却查不出原因”之类的问题。

  6. 96789123 说:

    看了各位的意见,xianglitian的方法最适合我的情况。直接使用消息确实可以避免不同父类的问题。oyljerry 的方式,跟xxd_qd 的方式都是需要一个通用的父类。对于我不想修改太多的情况,采用消息传递即可。谢谢大家都意见~

  7. nrc001 说:

    你Ctrl中保存父窗口CIparentDlg类的指针,修改Ctrl类的构造函数,Ctrl类中加上一个CIparentDlg类的成员变量,用来接收父窗口类的指针

我要评论

评论功能因故关闭!

请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)


返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明