之前的笔记搬运
0x1什么是子类化
就是针对指定某个控件, 在系统处理该控件消息之前, 提前过滤该控件的消息,
在完成自己想要的处理之后, 再还给操作系统处理;
0x2 SDK中怎么实现子类化
SetWindowLong 设置窗口属性
在窗口过程函数之前增加指定控件的新窗口过程函数,关于该控件的消息会优先发送到自己设置的过程函数, 最后在还给旧窗口过程函数;
SetClassLong 设置类属性
给指定类增加新的窗口过程函数, 在设置之后,该类所创建的所有控件的消息会优先发送到自己设置的过程函数,最后在还给旧窗口过程函数;
0x3 MFC中怎么实现子类化
(1)创建某个控件对应的子类(比如继承CEdit/CButton类)
(2)通过DDX将该类与某控件相绑定
(3)在控件属性里NOTIFY选项设置为TRUE
(4)重写某个虚函数或者响应某个消息
做完上述步骤后, 绑定子类的控件会优先发送到自己设置的过程函数,
最后在还给旧窗口过程函数, 而不想使用子类化的控件, 不绑定子类就可以;