1. 程式人生 > >MFC中theApp的用法

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