資源描述:
《CWinApp 應(yīng)用程序類共63個(gè)成員》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、CWinApp應(yīng)用程序類共63個(gè)成員(由Cobject-CCmdTarget-CWinThread派生)#includeCWinApp類是你派生Windows應(yīng)用程序?qū)ο蟮幕悺?yīng)用程序?qū)ο筇峁┏跏蓟愕膽?yīng)用程序(及其每個(gè)實(shí)例)的成員函數(shù),并運(yùn)行該應(yīng)用程序。每個(gè)使用MFC類的應(yīng)用程序只能包含一個(gè)CWinApp派生類對(duì)象。當(dāng)Windows調(diào)用由MFC庫提供的WinMain函數(shù)時(shí),其它C++全局對(duì)象被創(chuàng)建并生效,該對(duì)象(CWinApp派生類)被創(chuàng)建。你應(yīng)該在全局級(jí)聲明它。當(dāng)你從CWinApp派生一個(gè)應(yīng)用程序類時(shí),重載InitI
2、nstance成員函數(shù)來創(chuàng)建應(yīng)用程序的主窗口對(duì)象。在添加CWinApp成員函數(shù)時(shí),MFC庫提供下列全局函數(shù)來訪問你的CWinApp對(duì)象和其它全局信息:AfxGetApp獲得CWinApp對(duì)象指針。AfxGetInstanceHandle獲得當(dāng)前應(yīng)用程序?qū)嵗木浔?。AfxGetResourceHandle獲得應(yīng)用程序資源句柄。AfxGetAppName獲得一個(gè)字符串指針,該字符串包含應(yīng)用程序名稱。換個(gè)方式,如果你有一個(gè)CWinApp對(duì)象指針,可用m_pszExeName來得到應(yīng)用程序名稱。?SeeCWinApp:TheApplicationCl
3、assinVisualC++Programmer'sGuideformoreontheCWinAppclass,includinganoverviewofthefollowing:CWinApp-derivedcodewrittenbyAppWizard.CWinApp'sroleintheexecutionsequenceofyourapplication.CWinApp'sdefaultmemberfunctionimplementations.CWinApp'skeyoverridables.?◆數(shù)據(jù)成員1、m_pszAppName指定
4、程序名稱。程序名稱可來自傳送給CWinApp構(gòu)造函數(shù)的參數(shù),如果沒有指定,就利用ID號(hào)為AFX_IDS_APP_TITLE的資源字符串,再?zèng)]有的話就使用程序的EXE文件名稱。該數(shù)據(jù)成員是全局函數(shù)AfxGetAppName的返回值,它是constchar*型的公共變量。注意:如果你要給m_pszAppName賦值,必須動(dòng)態(tài)分配堆棧。CWinApp的析構(gòu)函數(shù)以該指針調(diào)用free()。你可能想用_tcsdup()運(yùn)行時(shí)庫函數(shù)來做內(nèi)存分配,也要用還未賦新值的當(dāng)前指針釋放內(nèi)存。舉例如下://在CWinApp啟動(dòng)時(shí)首先釋放由MFC分配的字符串。//該字符
5、串在InitInstance被調(diào)用前被分配。free((void*)m_pszAppName);//改變程序文件名稱。//CWinApp的析構(gòu)函數(shù)將釋放內(nèi)存。38m_pszAppName=_tcsdup(_T("d:\somedir\myapp.exe"));例子:CWnd*pWnd;//設(shè)置pWnd到某些窗口已創(chuàng)建的CWnd對(duì)象。//下面調(diào)用CWnd::MessageBox使用了應(yīng)用程序標(biāo)題作為消息窗口名稱。pWnd->MessageBox("Somemessage",AfxGetApp()->m_pszAppName);//獲得程序標(biāo)
6、題更直接的途徑是調(diào)用AfxGetAppName:pWnd->MessageBox("Somemessage",AfxGetAppName());//以應(yīng)用程序標(biāo)題作為消息框名稱來顯示消息框的更容易的方法//是調(diào)用AfxMessageBox:AfxMessageBox("Somemessage");2、m_hInstance識(shí)別當(dāng)前應(yīng)用程序?qū)嵗?。與Windows傳送給WinMain的參數(shù)hInstance一致。m_hInstance數(shù)據(jù)成員是Windows應(yīng)用程序當(dāng)前實(shí)例的句柄,它是全局函數(shù)AfxGetInstanceHandle的返回值,是一
7、個(gè)HINSTANCE型的公共變量。例子://通常你不必直接傳送程序的hInstance給WindowsAPIs,因?yàn)檫@與MFC//成員函數(shù)的作用等同等同,下面的例子不是通常作法:HCURSORhCursor;hCursor=::LoadCursor(AfxGetApp()->m_hInstance,?MAKEINTRESOURCE(IDC_MYCURSOR));//獲得程序hInstance更直接的途徑是調(diào)用AfxGetInstanceHandle:hCursor=::LoadCursor(AfxGetInstanceHandle(),?MA
8、KEINTRESOURCE(IDC_MYCURSOR));//如果你需要用hInstance來加載一個(gè)資源,最好調(diào)用AfxGetResourceHandle//而不