MFC中怎么定义全局变量?
来源:百度知道 编辑:UC知道 时间:2024/09/21 08:46:43
你调用对话框的时侯,可以把这个变量传给对话框啊。如果使用值传递,再return回来不就得了。
一定要用全局变量的话,在view的cpp中
int a;
在dialog的cpp中extern int a;
这样就好了。
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。
一、在应用程序类中定义
用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。
从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于很容易获得CxxxApp类的指针,所以可以在文档、视 图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用 “AfxGetApp()->成员”访问变量或函数。
例:
Test.h:(应用程序类头文件)
class CTestApp : public CWinApp + i; Q+ }
public:
int x; //全局变量
int f(int y); //全局函数 ) X s+ s' N+ U
…………
Test.cpp:(应用程序类程序文件)
int CTestApp::f(int y) //全局函数定义
{
定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问变量x和函数f():
void CTestView::xyz()
{
CTestApp *app = (CTestApp *)AfxGetApp(); //生成指