- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC编程MFC下全局变量和全局函数的定义和调用,php函数调用全局变量,mfc全局变量,mfc定义全局变量,mfc如何定义全局变量,mfc全局函数,mfc添加全局变量,mfc调用函数,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++;
returny;
}
定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问
变量x和函数f():
voidCTestView::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
文档评论(0)