在MFC下如何定义全局变量和全局函数用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行
实际上有多种方法可以实现,这里只介绍两种方法
一、在应用程序类中定义用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类
这个类主要进行程序的初始化,生成文档、视图对象等工作
我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了
从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果
访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用“AfxGetApp()->成员”访问变量或函数
例:Test
h:(应用程序类头文件)classCTestApp:publicCWinApp{public:intx
//全局变量intf(inty)
//全局函数…………}
cpp:(应用程序类程序文件)intCTestApp::f(inty)//全局函数定义{y++
returny
}定义在CTestApp类中的变量和函数可以在其它类中被访问
比如在视图的某函数中要访问变量x和函数f():voidCTestView::xyz(){1/5CTestApp*app=(CTestApp*)AfxGetApp()
//生成指向应用程序类的指针app->x=0
//访问变量xintz=app->f(1)
//访问函数f()…………}这样,变量x和函数f()可以视作为全局的
用这种方法实现的全局变量和全局函数虽比较简单,但也有缺点,一是访问不太方便,每次都需要获取应用程序类的指针