窗口子类化的作用
简单讲就是用自定义的窗口过程替换原有的窗口过程,用自定义的窗口过程来处理该窗口的消息响应。
窗口子类化技术最大的特点就是能够截取 Windows的消息。一旦用户自定义的窗口函数截取了传向原窗口函数的消息,就可以对被截取的消息进行如下处理:
将其传给原来的窗口函数。这是对大多数消息应该采取的措施,因为子类通常只对原来的窗口特性作少量的改动
截取该消息,阻止其向原窗口函数发送。
修改该消息,修改完毕以后再向原窗口函数发送。
Windows SDK提供了一些设计好的窗口类,如 EDIT、 LISTBOX、 TREEVIEW等。通过截取这些通用窗口类的消息,用户程序可以为它们添加新的特性,改善其外观,扩充其功能。
子类化的优点主要体现在以下两个方面:首先,它不需要创建新的窗口类,不需要了解一个窗口的窗口过程。这在原来的窗口函数是由别人编写,而且创建过程不可见的情况下非常有用;其次,子类化比较容易实现,因为所有要做的工作仅仅就是写一个窗口函数
在 VC中实现窗口子类化
上面介绍的子类化是从 Windows本身的窗口函数概念来讲的,实际上属于 SDK( Software Development Kit)编程的范畴,在 MFC中情况有所不同。下面将分别描述在这两种情况下窗口子类化实现的方法。
VC中基于 SDK编程的窗口子类化
VC中基于 SDK编程的窗口子类化的基本步骤如下:
(1) 正常创建原始窗口,得到窗口的句柄