代码片段:CFormView手动创建以及OnInitialUpdate( 二 )

DECLARE_DYNCREATE(子类的头文件)

IMPLEMENT_DYNCREATE(子类的实现文件)

这两个宏经过展开后的即可使类具备动态创建的特性 。 我们还会注意到 , 子类的构造/析构被声明为protected , 这明确的向它的使用者传达出了这样的概念:不要显式的创建我 , 请”动态创建”我 。

也即 , 如下的代码是不能工作的:

MFC框架的参与

基于以上的原理 , 在文档视图结构中 , 我们不需要显式视图窗口 , 框架会我们做这件事情 , 魔法就在于这些类均支持动态创建特性 。 但是 , 有时候我们希望能手动创建视图 , 并

1) 保持构造/析构仍然是protected

2) 享受其天然支持的滚动特性

直接上代码

代码解析

1) 我们直接使用了RUNTIME_CLASS(ClassName)->CreateObject这一句法进行了对象的创建 。

推荐阅读