追根究底,MFC六大关键技术剖析(第三部分)[3]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 liyi268 的 blog

     static cruntimeclass* pascal load();    //遍历整个类型链表,返回符合动态创建的对象。

 static cruntimeclass* pfirstclass;        //类型链表的头指针

};

一下子往结构里面塞了那么多的东西,大家可以觉得有点头晕。至于cobject* (pascal *m_pfncreateobject)();,这定义函数指针的方法,大家可能有点陌生。函数指针在c++书籍里一般被定为选学章节,但mfc还是经常用到此类的函数,比如我们所熟悉的回调函数。简单地说m_pfncreateobject即是保存了一个函数的地址,它将会创建一个对象。即是说,以后,m_pfncreateobject指向不同的函数,我们就会创建不同类型的对象。

有函数指针,我们要实现一个与原定义参数及返回值都相同一个函数,在mfc中定义为:

static cobject* pascal createobject(){return new xxx};//xxx为类名。类名不同,我们就创建不同的对象。

由此,我们可以如下构造cruntimeclass到链表:

cruntimeclass classxxx={

类名,

……,

本文关键:追根究底,MFC六大关键技术剖析(第三部分)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top