在下非科班出生,谁能跟我解释一下子类化是干么的,最好有个简单例子.

解决方案 »

  1.   

    子类化就是创建一个新的窗口消息处理过程,并将其插入到原先的默认窗口消息处理过程之前。子类化分为三类:实例子类化(instance subclassing)—从窗口或控件的单一实例截获消息,这种子类化技术最普遍;全局子类化(global subclassing)—能够截获从相同的窗口类创建出来的多个窗口或控件的消息;超类化(superclassing)—和全局子类化很类似,区别在于可以应用在新的窗口类上面。
    首先,我们看看这个C++程序:
    #include <iostream>
    using namespace std;
    class Parent
    {
    public:
      void func { cout << "Parent" << endl; }
    };
    class Child : public Parent
    {
    public:
      void func { cout << "Child" << endl; }
    };
    void main()
    {
      Parent p;
      Child c;
      p.func();
      c.func();
    }
    这段代码中我定义了两个C++类:父类和子类,并且子类是继承自父类的;它们有一个具有相同名称的成员函数func。在main函数中,我分别构造了父类和子类的对象,并调用了它们各自的成员函数func。结果如下:
    Parent
    Child
    简单说来,这段代码就是子类根据自己的需要改写了func成员函数。而Win32的子类化的原理也与此类似,只不过子类化实际上并没有像C++一样重载哪个函数,而是靠拦截Windows系统中的某些消息来自己进行处理罢了。