第6章+章框架窗口、文檔和視圖

第6章+章框架窗口、文檔和視圖

ID:46327621

大?。?.36 MB

頁(yè)數(shù):126頁(yè)

時(shí)間:2019-11-22

第6章+章框架窗口、文檔和視圖_第1頁(yè)
第6章+章框架窗口、文檔和視圖_第2頁(yè)
第6章+章框架窗口、文檔和視圖_第3頁(yè)
第6章+章框架窗口、文檔和視圖_第4頁(yè)
第6章+章框架窗口、文檔和視圖_第5頁(yè)
資源描述:

《第6章+章框架窗口、文檔和視圖》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、第6章框架窗口、文檔和視圖盡管窗口、文檔和視圖是MFC的基礎(chǔ),但可能也是最不易理解的部分,因?yàn)槠涓拍钚员葌鹘y(tǒng)編程所需的WindowsAPI函數(shù)更強(qiáng)一些6.1框架窗口框架窗口可分為兩類:一類是應(yīng)用程序主窗口,另一類是文檔窗口。6.1.1主窗口和文檔窗口主框架窗口是應(yīng)用程序直接放置在桌面(DeskTop)上的那個(gè)窗口,每個(gè)應(yīng)用程序只能有一個(gè)主框架窗口,主框架窗口的標(biāo)題欄上往往顯示應(yīng)用程序的名稱。6.1.1主窗口和文檔窗口文檔窗口對(duì)于單文檔應(yīng)用程序來說,它和主框架窗口是一致的,即主框架窗口就是文檔窗口;

2、而對(duì)于多文檔應(yīng)用程序,文檔窗口是主框架窗口的子窗口,如圖6.1所示。文檔窗口主框架窗口6.1.2窗口風(fēng)格的設(shè)置窗口風(fēng)格既可以通過MFCAppWizard來設(shè)置,也可以在主窗口或文檔窗口類的PreCreateWindow函數(shù)中修改CREATESTRUCT結(jié)構(gòu),或是可以調(diào)用CWnd類的成員函數(shù)ModifyStyle和ModifyStyleEx來更改。1.窗口風(fēng)格窗口風(fēng)格通常有一般(以WS_為前綴)和擴(kuò)展(以WS_EX_為前綴)兩種形式。這兩種形式的窗口風(fēng)格可在函數(shù)CWnd::Create或CWnd::

3、CreateEx參數(shù)中指定,其中CreateEx函數(shù)可同時(shí)支持以上兩種風(fēng)格,而CWnd::Create只能指定窗口的一般風(fēng)格。需要說明的是,對(duì)于控件和對(duì)話框這樣的窗口來說,它們的窗口風(fēng)格可直接通過其屬性對(duì)話框來設(shè)置。常見的一般窗口風(fēng)格如表6.1所示。1.窗口風(fēng)格表6.1窗口的一般風(fēng)格6.1.2窗口風(fēng)格的設(shè)置2.用MFCAppWizard設(shè)置MFCAppWizard有一個(gè)[高級(jí)]按扭(在創(chuàng)建單文檔或多文檔應(yīng)用程序過程的第四步中),允許用戶指定有關(guān)SDI和MDI框架窗口的屬性,圖6.2表示了Advan

4、cedOptions對(duì)話框的WindowStyles頁(yè)面,其中的選項(xiàng)含義見表6.2。但在該對(duì)話框中,用戶只能設(shè)定少數(shù)幾種窗口風(fēng)格。圖6.2高級(jí)選項(xiàng)對(duì)話框表6.2高級(jí)選項(xiàng)對(duì)話框窗口風(fēng)格的各項(xiàng)含義6.1.2窗口風(fēng)格的設(shè)置3.修改CREATESTRUCT結(jié)構(gòu)當(dāng)窗口創(chuàng)建之前,系統(tǒng)自動(dòng)調(diào)用PreCreateWindow虛函數(shù)。在用MFCAppWizard創(chuàng)建文檔應(yīng)用程序結(jié)構(gòu)時(shí),MFC已為主窗口或文檔窗口類自動(dòng)重載了該虛函數(shù)。用戶可以在此函數(shù)中通過修改CREATESTRUCT結(jié)構(gòu)來設(shè)置窗口的絕大多數(shù)風(fēng)格。例如

5、,在單文檔應(yīng)用程序中,框架窗口默認(rèn)的風(fēng)格是WS_OVERLAPPEDWINDOW和FWS_ADDTOTITLE的組合,更改其風(fēng)格可如下列的代碼:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){//新窗口不帶有[最大化]按鈕cs.style&=~WS_MAXIMIZEBOX;//將窗口的大小設(shè)為1/3屏幕并居中cs.cy=::GetSystemMetrics(SM_CYSCREEN)/3;cs.cx=::GetSystemMetrics(SM_CXS

6、CREEN)/3;cs.y=((cs.cy*3)-cs.cy)/2;cs.x=((cs.cx*3)-cs.cx)/2;returnCFrameWnd::PreCreateWindow(cs);}代碼中,前面有“::”作用域符號(hào)的函數(shù)是指全局函數(shù),一般都是一些API函數(shù)?!癱s.style&=~WS_MAXIMIZEBOX;”中的“~”是按位取“反”運(yùn)算符,它將WS_MAXIMIZEBOX的值按位取反后,再和cs.style值按位“與”,其結(jié)果是將cs.style值中的WS_MAXIMIZEBOX標(biāo)

7、志位清零。6.1.2窗口風(fēng)格的設(shè)置4.使用ModifyStyle和ModifyStyleExCWnd類中的成員函數(shù)ModifyStyle和ModifyStyleEx也可用來更改窗口的風(fēng)格,其中ModifyStyleEx還可更改窗口的擴(kuò)展風(fēng)格。這兩個(gè)函數(shù)具有相同的參數(shù),其含義如下。BOOLModifyXXXX(DWORDdwRemove,DWORDdwAdd,UINTnFlags=0);其中,參數(shù)dwRemove用來指定需要?jiǎng)h除的風(fēng)格,dwAdd用來指定需要增加的風(fēng)格,nFlags表示SetWind

8、owPos的標(biāo)志,0(默認(rèn))表示更改風(fēng)格的同時(shí)不調(diào)用SetWindowPos函數(shù)。由于框架窗口在創(chuàng)建時(shí)不能直接設(shè)定其擴(kuò)展風(fēng)格,因此只能通過調(diào)用ModifyStyle函數(shù)來進(jìn)行。例如用MFCClassWizard為一個(gè)多文檔應(yīng)用程序Ex_MDI的子文檔窗口類CChildFrame添加OnCreateClient消息處理,并增加下列代碼:BOOLCChildFrame::OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。