MFC中怎么定义全局变量?

来源:百度知道 编辑:UC知道 时间:2024/06/22 19:22:41
我建了一个View,然后View中又调用了一个对话框,有些变量是需要在View中和对话框中同时使用的,当调用对话框的时候,变量的操作返回给对话框,而不是返回给View,因此想要定义的变量在View和对话框的类中都可以使用,请问怎么实现呢?这是定义全局变量的问题吗?怎么定义?希望高手指教,谢谢啦。。。急等。。

你调用对话框的时侯,可以把这个变量传给对话框啊。如果使用值传递,再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(); //生成指