- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何在MFC中添加全局变量和全局函数
在MFC下如何定义全局变量和全局函数
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。 一、在应用程序类中定义 用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。 从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、 对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用 “AfxGetApp()-成员”访问变量或函数。 例: Test.h:(应用程序类头文件)
class CTestApp : public CWinApp { public: int x; //全局变量 int f(int y); //全局函数 …………};?? Test.cpp:(应用程序类程序文件)
int CTestApp::f(int y) //全局函数定义 { y++; return y; }? 定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问变量x和函数f():
void CTestView::xyz(){ CTestApp *app = (CTestApp *)AfxGetApp(); //生成指向应用程序类的指针 app-x = 0; //访问变量x int z = app-f(1); //访问函数f() …………}? 这样,变量x和函数f()可以视作为全局的。 用这种方法实现的全局变量和全局函数虽比较简单,但也有缺点,一是访问不太方便,每次都需要获取应用程序类的指针;再就是把一些与应用程序类本身无关的变量和函数放在里面,使这个类看上去怪怪的,破坏了类的封装。 二、用静态变量和静态函数实现 很喜欢API函数的那种调用方法,不论在哪个类中只要用“::API函数”就可以调用了。合理利用静态类型(static)可以实现与此相似的全局变量和全局函数。 静态变量和静态函数有如下性质: 若在一个类中用关键字static声明数据成员,则这个数据成员就只存在一个拷贝,无论该类创建了多少个实例,它始终只存在一个,即使该类的实例一个也没创建,它也存在。 若在一个类中用关键字static声明函数,该函数可以用“类名::函数名”方式访问,无需引用该类的实例,甚至这个类的实例可以不存在。 利用这个性质实现的全局变量和函数使用起来很方便。 值得注意的是,全局变量和全局函数最好集中封装,不要在文档、视图等类内部定义,这样用起来才有全局的感觉。 例: 1、添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类 单击“Insert”菜单下的“New Class”命令,选择“Class type”为“Generic Class”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。 2、包含公用类的头文件,使各个类都能访问它 CPublic的头文件应包含在应用程序类的头文件中,这样在其它类中引用CPublic类时就不需要再包含了。 Test.h:(应用程序类头文件)#include Public.h //包含公用类头文件class CTestApp : public CWinApp{ ………… }; 3、在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化 Public.h:(公用类头文件)
class CPublic{public: CPublic();virtual ~CPublic();public:static int x; //全局变量 static int time; //全局变量 static int f(int y); //全局函数 ………… }? Public.cpp:(公用类程序文件)
int CPublic::x = 0; //初始化全局变量 int CPublic::time; //定义全局变量 CPublic::CPublic() { } CPublic
您可能关注的文档
- 第三章 汇编语言和程序设计1.ppt
- SAS+软件中精确P+值计算并行实现策略研究.pdf
- 第九篇 动态双组合功能.ppt
- 第四章第四章细胞膜及细胞表面细胞膜及细胞表面.pdf
- 8第八篇 电机驱动模块.docx
- 第4篇--窗体——Access的“查询界面”-考勤管理.ppt
- 用ARCGIS 10 CAD等高线转为DEM教程.docx
- 终端促销的策划、实施及评估.pptx
- 第三篇 神州数码DCFW-1800系列防火墙配置.pdf
- 生物素标记与化学发光检测技术在核酸杂交与EMSA中的应用.ppt
- 2025年医疗设备采购市场前景分析与用户决策关键要素.docx
- 鲁教版七年级下学期英语一次月考试卷.pdf
- 2025年医疗设备采购决策要素深度解析与供应商评估体系创新.docx
- 2025年医疗设备采购决策要素深度解析与供应商评估体系创新研究.docx
- 2023年定西市四年级科学第二单元模拟试卷.doc
- 2025年旧家电回收处理中心废弃物处理标准与规范分析.docx
- 2025年医疗设备采购决策辅助工具开发与应用报告.docx
- 2025年旧家电回收处理中心废弃物处理设施选址与建设标准.docx
- 2023年定州市三年级信息科技第四单元模拟试卷.doc
- 2025年旧家电回收处理中心社区合作模式与共赢策略研究报告.docx
文档评论(0)