MFC应用程序类中的全局变量与函数定义

5星 · 超过95%的资源 需积分: 50 7 下载量 150 浏览量 更新于2024-09-12 收藏 36KB DOC 举报
在Microsoft Foundation Classes (MFC) 的框架下,全局变量和全局函数的定义与一般C++程序有所不同。MFC生成的工程通常包含多个文件,并且为了在工程内部多个文件间共享数据和功能,需要采用特殊的方法来定义。本文将介绍两种主要的实现方式。 首先,一种方法是在应用程序类(如CxxxApp,继承自CWinApp)中定义全局变量和函数。虽然这些变量和函数本质上仍是类的成员,但由于CxxxApp类在整个应用程序中的全局存在,通过获取它的指针(使用AfxGetApp()函数),可以在文档、视图、对话框和其他自定义类中方便地访问,实现了全局变量的效果。例如: ```cpp // 在Test.h中 class CTestApp : public CWinApp { public: int x; // 全局变量 int f(int y); // 全局函数 }; // 在Test.cpp中 int CTestApp::f(int y) { y++; return y; } // 在其他类中访问全局变量和函数 void CTestView::xyz() { CTestApp* app = (CTestApp*)AfxGetApp(); app->x; // 访问全局变量x app->f(10); // 调用全局函数f } ``` 这种方式的优点是封装性较好,易于管理,但需要注意的是,如果对数据访问过于频繁,可能会影响性能,因为每次都需要通过类指针间接访问。 另一种方法是在资源文件中定义全局变量,通过注册表单或对话框资源来实现。MFC提供了注册表单(如IDD_APPREG)作为存储全局变量的容器,用户可以通过IDC_xx的方式在代码中访问这些变量。这种方法适合于存储配置信息等不需要频繁修改的数据。 总结来说,MFC下的全局变量和函数定义主要依赖于应用程序类和资源文件,通过巧妙地利用类的生命周期和资源管理机制,实现了跨文件的共享和访问。在实际开发中,根据需求选择合适的方法,以保证代码的可维护性和性能。