?? untitled-15.txt
字號(hào):
在Hello.cpp中,CMyApp的Initlnstance通過(guò)實(shí)例化Hello的CMainwindow類來(lái)創(chuàng)建Hello
窗口。語(yǔ)句
ITL-PMdiflwfld= fi6w CMdiflwifld0W;
構(gòu)造了一個(gè)CMainwindow對(duì)象,并將其地址復(fù)制到了應(yīng)用程序?qū)ο蟮膔n-pMainwnd數(shù)
據(jù)成員中。在窗口創(chuàng)建以后,Initlnstance就會(huì)通過(guò)CMainwindow指針調(diào)用Showwindow和
Updatewindow函數(shù)來(lái)顯示它,要記住除非使用WS.VISIBLE屬性,否則窗口是不可見(jiàn)的:
。pMainwfld-> Showwindow(。nCrudshow);
。pMa。nwnd>UpdateW。ndow();
Showwindow和Undatewindow是所有窗口對(duì)象共用的CWnd成員函數(shù),其中包括
CFramewnd類的對(duì)象,CMainwindow就是從CFramewnd派生出來(lái)的。這些函數(shù)幾乎就是對(duì)
同樣名稱的 API函數(shù)的包裝。要從 MFC程序調(diào)用一個(gè)常規(guī)的 Windows API函數(shù),需要在函
數(shù)名稱前添加一個(gè)全局運(yùn)算符“::”,例如:
::Updatewindow(hwnd);
這個(gè)記號(hào)確保即使對(duì)象具有相同名稱的成員函數(shù),也可以調(diào)用API函數(shù)。在本書(shū)其余部分,
Windows API函數(shù)將用“::”標(biāo)記以便與 MFC成員函數(shù)區(qū)分開(kāi)來(lái)。
Showwindow僅接收一個(gè)參數(shù),即一個(gè)整數(shù),用來(lái)指定窗口開(kāi)始顯示時(shí)處于最小化、最大
化或者既不是最小也不是最大。根據(jù)Wind。ws程序設(shè)計(jì)協(xié)議,Hell。把存儲(chǔ)在應(yīng)用程序?qū)ο?的。 nCmdshow變量中的值傳遞給了 Showwindow,其中保存著傳遞給 WinMain的 nCmdshow
參數(shù)。。nCmdshow的值通常是SW.SHOWNORMAL,指出窗口應(yīng)該處于正常的非最小、非
最大狀態(tài)。然而,根據(jù)用戶啟動(dòng)應(yīng)用程序的不同,Windows偶爾也將如 SW_SHOWMAXI-
MIZED或SW.SHOWMINIMIZED這樣的值插進(jìn)去。除非有特殊原因,否則Initlnstance應(yīng)該總
是給Showwindow傳遞rn-nCmdshow變量而不是硬編碼的SW.值。
Updatewindow立即重新繪制窗口來(lái)完成由Showwindow啟動(dòng)的作業(yè)。工作完成后,
Initlnstance返回TRUE以允許應(yīng)用程序繼續(xù)進(jìn)行。
其他CWinApp可覆蓋函數(shù)
Initlnstance僅僅是幾個(gè)能夠被覆蓋的虛擬CWinApp成員函數(shù)之一,可通過(guò)它來(lái)自定義
應(yīng)用程序?qū)ο蟮牟僮鳌T谀腗FC文檔中查找一下CWinApp可覆蓋函數(shù),您將看到一個(gè)列
表,其中包含名字如 WinHelp和 ProcesswndProcException這樣的函數(shù)。盡管很方便,但這些
函數(shù)中的大多數(shù)極少被覆蓋。例如:您可以使用 Exitlnstance在應(yīng)用程序終止后清屏。如果
使用Initlnstance分配了內(nèi)存或其他資源,Exitlnstance將是釋放這些資源的完美地方。Exitln-
stance默認(rèn)的操作是做一些框架結(jié)構(gòu)要求的清除事務(wù),因此如果您覆蓋了Exitlnstance就應(yīng)
該確保要調(diào)用基類版本。最終,由Exitlnstance返回的值是由WinMain返回的退出代碼。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -