子类化的概念

写这篇文章起自于subclasswindow

 

在组合框化解为edit和listbox的技术中,出现了”子类化“的概念,因此,总以为子类化就是这种分离。其实,关于”子类化“这个名称根本就不合理,它也跟上述分离没什么关系。

 

抛开中文名字”子类化“,还是看一下windows的本质吧:

 

在msdn中,有一个函数SubclassWindow,还有个虚函数PreSubclassWindow。

 

vc中关于PreSubclassWindow 有句注释:Call after the object is attched to an existing window.

msdn中关于SubclassWindow有句注释:Call this member function to "dynamically subclass" a window and attach it to this CWnd object.

 

这里,首先明确一点,window(窗口)和Cwnd对象不是一回事,Cwnd是一个c++类对象,它需要与某个window关联(attach),因此才有了上述attach的概念。

 

所以说,PreSubclassWindow也就是两者关联之后,给程序员留了个机会编写代码。

 

另外,从SubclassWindow的解释中也可以知道"动态子类化"的概念只不过是指,某控件不像在模版中编辑的资源控件一样,它是在程序中创建的,所以称为动态的(可以联想一下组合框分离的edit和listbox),也就是说SubclassWindow叫成子类化完全就是误导人,它只不过完成了一个动态关联而已。

 

 

补充:

动态解除对象与控件的关联的方法是

wnd.UnsubclassWindow()

wnd.Detach()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值