C++ windows窗体应用程序如何设置窗体全局变量量 string啊

设置全局变量后为什么不是所有窗体都能使用?
[问题点数:40分,结帖人baikaixin1996]
设置全局变量后为什么不是所有窗体都能使用?
[问题点数:40分,结帖人baikaixin1996]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2017年12月 VB大版内专家分月排行榜第二2017年11月 VB大版内专家分月排行榜第二2017年3月 VB大版内专家分月排行榜第二2016年12月 VB大版内专家分月排行榜第二2016年10月 VB大版内专家分月排行榜第二2013年11月 VB大版内专家分月排行榜第二
2016年3月 VB大版内专家分月排行榜第三2012年9月 VB大版内专家分月排行榜第三
匿名用户不能发表回复!|MFC中 WinApp 的全局变量是怎么回事_百度知道
MFC中 WinApp 的全局变量是怎么回事
我有更好的答案
  用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。  一、在应用程序类中定义  用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。  从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于很容易获得CxxxApp类的指针,所以可以在文档、视 图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用 “AfxGetApp()-&成员”访问变量或函数。  例:  Test.h:(应用程序类头文件)  class CTestApp : public CWinApp + Q+ }  public:   //全局变量  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(); //生成指向应用程序类的指针 /  app  int z = app-&f(1); //访问函数f() 0 R,  }  这样,变量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:   //全局变量 % v   //全局变量 #  static int f(int y); //全局函数  }  在公用类中对静态变量进行初始化和定义函数体:  Public.cpp:(公用类程序文件)  int CPublic::x = 0; //初始化全局变量  int CPublic:: //定义全局变量  CPublic::CPublic()  {  }  CPublic::~CPublic()  {  }  int CPublic::f(int y) //全局函数,这里不要再加static  { y++; 4    } 3 O2 V% Z6 r+ r( k! L  4、全局量的使用  使用变量:CPublic::变量名6 H)  使用函数:CPublic::函数()  如在视图的某函数中访问变量x和函数f():  void CTestView::xyz()  {  CPublic::x = 0; //访问变量x;  CPublic::time = CPublic::f(1); //访问函数f()'  …………  }  在其它类中访问x、time和f()的方法与此相同。  5、几点注意:  ① 由于静态量可独立于类存在,不需要生成CPublic类的实例。  ② 静态数据成员的定义和初始化必须在类外进行,如例中x的初始化;变量time虽然没有初始化,但也必须在类外进行定义。由于没有生成CPublic类的实例,所以它的构造函数和析构函数都不会被执行,在里面做什么工作都没有什么意义。  ③ 如果静态函数需要访问CPublic类内的变量,这些变量也必须为静态的。因为非静态量在不生成实例时都不会存在。  这里x虽为类内成员,但如果不生成CPublic类的实例,就会出现函数f()存在,而变量x不存在的问题。  总之,用没有实例的类管理全局量是一个不错的选择,它具有集中管理,使用方便的好处。当然,除非特别必要,全局量还是少用为好,一个好的编程者决不会随意滥用全局量的,一个封装做得不好的程序,在修改维护时会让吃足苦头。
采纳率:81%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C#窗体程序定义全局变量
[问题点数:40分,结帖人chanjianjiao5475]
C#窗体程序定义全局变量
[问题点数:40分,结帖人chanjianjiao5475]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2018年3月 总版技术专家分月排行榜第一2013年5月 总版技术专家分月排行榜第一
2018年4月 总版技术专家分月排行榜第二2016年7月 总版技术专家分月排行榜第二2016年3月 总版技术专家分月排行榜第二2015年12月 总版技术专家分月排行榜第二2014年8月 总版技术专家分月排行榜第二2014年7月 总版技术专家分月排行榜第二2013年6月 总版技术专家分月排行榜第二
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
匿名用户不能发表回复!|在C++中如何使用全局变量? - 知乎93被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答4912 条评论分享收藏感谢收起#include &iostream&
#include &string&
std:: //这个就叫全局变量
int main()
msg = "Hello, world!";
std::cout && msg && std::
不过呢,这么做以后你会逐渐逐渐遇到各种问题,比如说多个.cpp文件都要用到同一个全局变量咋办?你需要做的是在一个.cpp里定义这个变量,然后在头文件里extern这个变量。问题解决。头文件里写:extern std::
某一个.cpp文件里写:std::
所有引用了这个头文件的cpp文件里就都可以使用msg这个全局变量了。然后你抬头一看,发现这么做会被轮子哥喷死,但是却又看不懂他在说啥……没事,等到你能看懂他在说啥的时候你就可以照着他说的做了。在看懂他说的话之前,每次想用全局变量的时候问自己一局“有没有不用全局变量以避免被轮子哥喷的办法?”即可。132 条评论分享收藏感谢收起写回答16:05 提问
C++ Windows窗体应用程序如何点击按钮跳转至另一个窗体
楼主最近因数据结构课程设计,需要写一个管理系统,且含图形化界面、。但是老师规定不能只能用双向循环链表存储数据,所以楼主便想创建"Windows窗体应用程序"工程。如图:
之后创建好了两个窗口,一个login登陆窗口,一个登陆过后需要填跳转到的主界面。如图:。
为什么我写如下方法不能实现窗口的跳转?哪位大神帮忙支下招呗。谢了...
附上main的代码
应该是没有问题的啊,C#都可以这样写?
按赞数排序
VC++ 我们都是选择 MFC 应用程序,,这样设计起来更方便快捷!!
我只做过winform,我就说一下winform的思路
在click事件里面添加代码
Form form = new Form();
form.show();
这样就可以。其中Form是你窗体的类名
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐

我要回帖

更多关于 c 窗体应用程序教程 的文章

 

随机推荐