MFC 制作的工程由很多文件构成, 它不能象一般C++程序那样随意在类外定义全局变量, 那样有时会在运行程序时出现问。
在软件开发过程中, 有时需要在不同的类之间利用全局变量传递数据, 利用全局函数处理相同问题, 而MFC 没有提供类似其他开发
工具的模块功能, 因此我们只得自己完成。实际上有多种方法可以实现, 这里介绍三种常用的方法。
1、 定义一个全局类的对象来实现
其实生成这个自定义类对象, 我们可以完全参照theApp 对象的生成方式[1- 2], 自定义一个CMyPublicData 的全局类。然后生
成CMyPublicData 全局对象, 通过对象调用全局变量及全局函数。
实现过程如下:
(1)添加一个没有基类的新类, 设类名起为CMyPublicData, 可称之为公用类。
单击“Insert”菜单下的“New Class”命令, 选择“Class type”为
“Generic Class”, 在“Name”栏中填入类名“CMyPublicData”, 单击
“OK”, 则新类建立完毕。
(2)创建全局的变量与全局函数
实际上是定义CMyPublicData 类的public 属性的成员变量和
成员函数。
CMyPublicData.h 的内容:
class CMyPublicData
{public:
CMyPublicData(void);
public:
virtual ~CMyPublicData(void);
public:
int Public_x;
//自定义了一个int 型全局变量Public_x
void Public_f();
//自定义了一个返回值类型void 无任何参数的全局函数Public_f
};
extern CMyPublicData MyPublicData; //这里声明了自定义全局对象
CMyPublicData.cpp 的内容:
#include "StdAfx.h"
#include "CMyPublicData.h"
CMyPublicData::CMyPublicData(void)
{}
CMyPublicData MyPublicData; //实例化全局对象
CMyPublicData::~CMyPublicData(void)
{}
void CMyPublicData::Public_f()//函数的定义
{//此处可增加函数完成实际功能的语句}
(3)包含公用类的头文件, 使各个类都能访问它
CMyPublicData 的头文件应包含在应用程序类的头文件中,
这样在其它类中引用CMyPublicData 类时就不需要再包含了。若
应用程序类的头文件为Example.h, 其样式如下:
#include "CmyPublicData.h" //包含公用类头文件
class CTestApp : public CWinApp
{