2024年4月2日发(作者:)

1

以下所有程序的类阶层架构、类名称、变量名称、结构名称、函数名称、函数行为,都以MFC

为仿真对象,具体而微。也可以说,我从数以万行计的MFC原始代码中,「偷」了一些出来,砍掉旁

枝末节,只露出重点。

在文件的安排上,我把模拟MFC的类都集中在MFC.H 和中,把自己派生的类集中在

MY.H 和 中。对于自定类,我的命名方式是在父类的名称前面加一个 "My",例如派生自

CWinApp 者,名为CMyWinApp,派生自 CDocument者,名为 CMyDoc。

MFC 类阶层

首先我以一个极简单的程序 Frame1,把 MFC 数个最重要类的阶层关系模拟出来:

这个实例仿真MFC的类阶层。后续数节中,我会继续在这个类阶层上开发新的能力。在这些名

为Frame? 的各范例中,我以 MFC 原始代码为蓝本,尽量模拟 MFC 的内部行为,并且使用完全相

同的类名称、函数名称、变量名称。这样的模拟对于我们在第三篇以及第四篇中深入探讨 MFC 时将

有莫大帮助。相信我,这是真的。

2

Frame1 范例程序

MFC.H

#0001 #include

#0003

#0004

#0005

#0006

#0007

#0008

#0010

#0011

#0012

#0013

#0014

class CObject

{

public:

CObject::CObject() { cout << "CObject Constructor n"; }

CObject::~CObject() { cout << "CObject Destructor n"; }

};

class CCmdTarget : public CObject

{

public:

CCmdTarget::CCmdTarget(){cout << "CCmdTarget Constructor n"; }

CCmdTarget::~CCmdTarget(){cout << "CCmdTarget Destructorn";}