三、动态创建
动态创建就是运行时创建指定类的对象,在mfc中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。我觉得这是每个mfc的学习者很希望理解的问题。
初次接触mfc的时候,很容易有这样的迷惘。mfc的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框架的时候,亲手写上cframewnd myframe;需要视的时候,亲自打上cview myview;……
但mfc不给我们这个机会,致使我们错觉窗口没有实例化就弹出来了!就象画了张电视机的电路图就可以看电视一样令人难以置信。但大伙想了一下,可能会一拍脑门,认为简单不过:mfc自动帮我们完成cview myview之流的代码不就行了么!!!其实不然,写mfc程序的时候,我们几乎要对每个大类进行派生改写。换句话说,mfc并不知道我们打算怎样去改写这些类,当然也不打算全部为我们“静态”创建这些类了。即使静态了创建这些类也没有用,因为我们从来也不会直接利用这些类的实例干什么事情。我们只知道,想做什么事情就往各大类里塞,不管什么变量、方法照塞,塞完之后,我们似乎并未实例化对象,程序就可以运行!
要做到把自己的类交给mfc,mfc就用同一样的方法,把不同的类一一准确创建,我们要做些什么事情呢?同样地,我们要建立链表,记录各类的关键信息,在动态创建的时候找出这些信息,就象上一节rtti那样!我们可以设计一个类: