MFC中定义全局变量和全局函数的方法

时间:2022-01-09 10:28:25
使用Visual C++6.0 中的MFC 基本应用时, 由于

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

{