MFC中theApp的用法

MFC应用程序中,无论是基于单文档还是对话框的应用程序,在应用程序类中,都有theApp这个变量,

eg:CADOApp theApp;

theApp代表应用程序实例~~

如果我们在应用程序类再定义了一个变量,例如 _ConnectionPtr m_pConnection; 

当我们在其他类,比如Dlg类中,想用到m_pConnection这个变量时,可以借助theApp来调用,

例如,在OnInitDialog函数中,有

m_pRecordset->Open("SELECT * FROM tt",
                                     theApp.m_pConnection.GetInterfacePtr(),
                                     adOpenDynamic,
                                     adLockOptimistic,  
                                     adCmdText); 

这句话~~

就是通过theApp来调用~~

***********************************************************************************************************************

注意:在C×××App类中 ,有 theApp 这个变量,

在MFC程序其他类中,可以用 theApp 来调用C×××App类中所有的方法和公有成员变量,

比如,如果想在B类中调用C×××App类VerifyPower()函数,只需在B类的头文件类的定义外,加上

extern C×××App theApp; 这句话~~

如果在C类中也想调用,则也要在C类的头文件中,加上extern C×××App theApp;

extern是外部的意思   用来调用其他文件中定义过的变量   
     当然,如果在一个文件中如果包括了头文件,也可以省去这一步

这样做的好处是,在某一个类中定义的函数或变量,在其他类中都可以使用,并且不用对原来那个类进行实例化,方便快捷,

这样做,对程序的封装也有一些不利的影响

*********************************************************************************************************************************

CSDN中对theApp的用法的总结:

1.theApp是你工程的头,你可以通过AfxGetApp()获得整个进程的指针,然后通过它,可以获得该进程的HWND以及HINSTANCE,和菜单。。。等等。不一而足。可以通过msdn获得更多的信息

2.theApp是个全局变量,几乎可以在程序的任何地方引用。如果你建立一个MDI或者SDI工程,那么,你可以看到一个类以*App结尾,这个theApp就是它的一个实例,在这个类中添加的public变量可以通过theApp引用。当然,由于WinApp是它的基类,theApp保存有许多有关程序运行期间的很多信息,如执行程序名,路径什么的。

3.加个成员及方法,可以随时用AfxGetApp访问

4.theApp是CWinApp类的派生类的对象,是一个全局变量。全局变量在WinMain()前被创建。

5.theApp就是应用程序的实例,没有他你就什么都不能做啊!他初始了进程啊!
--------------------- 
作者:foreverhuylee 
来源:CSDN 
原文:https://blog.csdn.net/foreverhuylee/article/details/35276191 
 

猜你喜欢

转载自blog.csdn.net/zb774095236/article/details/85246364