




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、基于單文檔的窗口分割簡介部分是對于MFC應用程序的介紹,在博客上看到的,覺得受益匪淺,所以寫到這里。不需要的朋友可以從第二部分程序設計開始看起。目錄基于單文檔的窗口分割1簡介3MFC應用程序類型簡介3單文檔與多視圖5單文檔多視圖程序設計6Stepl:創(chuàng)建單文檔的MFC程序6Step2:聲明相關的變量。6Step3:重載OnCreateClient()函數(shù),進行窗口的分割7Step4:設置行列初始值9附:代碼10簡介MFC應用程序類型簡介在MicrosoftVC+6.0中,基于MFC的應用程序一般分為以下幾種:多文檔界面(MDI)單文檔界面(SDI)基于對話框的應用程序。圖1-1應用程序類型其中
2、單文檔又可分為單視圖的和多視圖的。品三冷:;了-/1/1士工工學工4"寫£H件如闌病視圖坦)幫助尤匚nuF.緡號©區(qū)以造圖1-3單文檔多視圖般情況下,單文檔僅需要單視圖就夠了,如Windows自帶的記事本、畫圖程序等等,但圖1-2單文檔單視圖在一些情況下,單文檔需要多視圖支持,比如同時觀察文檔的不同部分,同時從不同的角度觀察同一文檔等。在MFC的框架下,文檔對象(CDocument)有一個保存其所有視圖的列表,并提供了增加視圖(AddView)與刪除視圖(RemoveView)函數(shù),以及當文檔內(nèi)容改變時通知其所有視圖的方法(UpdateAllViews)。類視困V
3、又宏和京量V全局函數(shù)和變星±j也CAboutDL宣tl比JCWairiFramei£lCSpli11arTtstAppS觸ft1硬殖時也CSplitier!estlfiew.±Kplitt如T式(vsd)7AidVi5CVie»tpITikksetlidCvi"Donst/iVtJidCv«id)comI*BeginVTa.i1Corsdr(vsid)."COINanb留Fuji,(3nst,AJX.GCuCIn丁(CFt網(wǎng)物nQ:1-4類視圖通過多文檔框架的窗口復制機制和單文檔框架的分割窗口機制是實現(xiàn)單文檔多視圖的主要方法
4、。單文檔與多視圖一般地,單文檔與多視圖有三種情況:1)在多文檔界面MDI中,每個視圖位于MDI的一個獨立子文檔框架中,視圖對象基于同一個視圖類。用戶可以通過窗口|新窗口”菜單,為同一文檔的視圖再創(chuàng)建一個窗口,通過新創(chuàng)建的窗口,可以編輯和觀察文檔的另一部分,同一文檔各個視圖之間自動實現(xiàn)同步,用戶修改一個視圖的內(nèi)容,在另外的視圖中也自動更新。MFC框架通過復制原來的子框架窗口和其中的視圖來實現(xiàn)上面的功能,并且是完全自動的。2)視圖對象基于同一視圖類,所有視圖位于同一文檔框架中。分割窗口將單文檔窗口的視圖區(qū)分割成幾個獨立的視圖,框架從同一視圖類創(chuàng)建多個視圖對象。Word的子窗口即屬于這種類型。3)視
5、圖對象基于不同的視圖類,所有的視圖位于同一文檔框架中。多個視圖共享同一文檔框架,但從不同的視圖類創(chuàng)建,每個視圖可以為文檔提供不同的觀察和編輯方法。比如在一個窗口里觀察文檔的不同部分,或者是在一個窗口里用不用類型的視圖觀察同一個文檔。這種類型的實現(xiàn)方法是通過重載框架類CMainFrame的成員函數(shù)OnCreateClient實現(xiàn),用戶可以根據(jù)不同需要將窗口分為垂直或水平的多個分割窗口。單文檔多視圖程序設計下面通過實例設計,介紹單文檔多視圖的窗口分割(上面介紹的第二種情況)Stepl:創(chuàng)建單文檔的MFC程序創(chuàng)建一個基于MFC的應用程序,程序類型選擇“單文檔”,命名為“SplitterTest”。S
6、tep2:聲明相關的變量在MainFrm.hpublic:CSplitterWndCSplitterWndCSplitterWndCSplitterWnd中添加如下變量聲明。m_miansplitter;m_leftSplitter;m_rightSplitter;m_leftbottom;BOOLmisSplitter;3458T89C1111111122“厘性public:CSpliUtrWCSplitt4pWnlCSpliUtrWnlCSpliatrWnlBOOLm_miinspl11.七電T;m_jrihtsplittsr:OSpli11”.指示窗口是否已維迸行了分割并在CMainFr
7、ame的構造函數(shù)中,初始化isSplitter為FALSE3=HCflainFranie構造/析構4- .-:1CFALSEJ;|'/TODO:在此添加成員初始化代碼1133BDfltLCMainframe:OnCreateClient(LPCKEATESTRUCTIpcm,CCreateCcmtext>pCortteirt)L14d111明116;117。L的119:12D:121|122123.12411ZS:12612T!1%129'130H131132:1.33:134.135:1前13TStep3:重載OnCreateClient()函數(shù),進行窗口的分割Clai
8、nFrmeYCCodeClasz:il垣孑討g«t_accValu*GttActicum白a七EtActiveFranteGftinterf4c*Hook的土M電1號亳目電5iring晝tScrollBarCtriKtnJHelFIslnvokeAllowedLoadFraneQnAffibiertFropartyOrJChilNotifyOrdCcmHandClnCreitAcerelates=-zl、IJnCi'e-LtClintOnfreatedientQrJinkLRfil白uTOnNcti£y圖2-1重載OnCreateClient()函數(shù)在OnCreat
9、eClient()函數(shù)中添加如下代碼:/TOK:由1麻加專用代碼加,或調(diào)用基類療窗口的分割ifGh_ntiniplitt*r.CrftteStttie(this,1,)=-FALSE)1rtturnFALSE;if(m_le£tsplitter.CreateSutic(fiim_mainzplitter,2f1,WS_CKILCIlSjnsiBLE,m_mainspli11er.IdFroibEckCol(0,O”=FAtSE)(r&turnFALSE:)ifGrj-ightsplittar.CreittStitciniplitter,1,2,WS_CHILD|VISIBLE
10、,mmainplitierIdPrQmiEowCQl1)=FALSE)returnFALSE;)i£G«_le£tbottom.CreateStatic(fcn_J.e£tsplitter,1,2,WS_C)nLD|ltfS_VISI£LEJm_la£tspLitter.IdFronkEowCftl1,0)士士FALSEJrtturnFALSE:1m_isSplitttr-TRUE;13至HO;Bl;142iU3=l同1mU7|H«=HOF15叫isd152i153E15堵155=1SG:157150;1碼160:lei!i
11、"163=164=165!I畸ItTilesllty=J7蝴定視圖CHe.:i«Raet;tClienlRectlaeEect);ifbjeftalitterCr電虱砰i個MQRlfflT:NE_CUSSOjliLrI«tVi«lCSizetcR«tVidtlO/2.cRectH式的t/?LrJUL>I)rIrwtarRTJH5E;1litn_riztt£3ilittijCreateVisw(U.U,IUN71ME_LLASSIfSplltterl*st¥iw),CSiz<cA*clVidt±i0/4.
12、cl*ct.H*i£ht)£fCuntkGuTHiJE)fretijriiFALSE.ifa_riditspliti«rCrtit1,MJjriME_CU55(CSplittwitsCSizt(cl«tWidthORcE«vH*itfiUDXContcmt)=F+L£TI)rrci>jrnFALSE,:f5iflbvltmEmtt«Yi,電OJWnMZCLASS®5plilUiTtitVis),C重工SRrJ悔1th。/4eB*ct.KtigfU0/2).Can4altI)=FM-SI)lrILrtt'
13、;lHi.TALSI;ifQi_lafibvttwi.CrcttcVigfiQJ.HU1OM3_CLASS(CSplitt“Tv,tVi(w).CSin(cK«gkcfkcl.Hti次t0/乃.他口川ewtFfiLSE1rtt<vnTAI3T;TitJTT.rEUE這時,運行程序,會發(fā)現(xiàn)窗口已經(jīng)被分割為多視圖。但是,需要拖動一下才顯示出來。圖2-2初步運行結(jié)果Step4:設置行列初始值重載OnSize函數(shù)。CBainFrVCCadeCl/:41匿多司。JI州_QUERTDRJWIlffM_QUERYEKDSI:附_QUERT蛇WF式VLQUERWFEIIffM_QUERTUIS
14、TA州IBITTTO刖陽_EE再TQ刖舊;TMRBlITTOHUfffNI.REMDERAUJiffM_RENDEEFDRJJ.卷SETCUESOR州_BETFOCUSffi_SEniN(3CIUM.SHamwDOtfM_SIZEOnfiiia_SIZECITFEC.圖2-3重載OnSize函數(shù)在函數(shù)中添加如下代碼,167166317u171MN173174ITS176i176'ITE;UvoidCM&iiiFtaftognSih巨CUIHTiJ建電,mt國latcyj/71010;在此處添加消息處理程序代碼CfiectexFtan;G*tCli9n.
15、tEect(ftffrFran);ifCFrAjntd:OnSi.工電MT1yatjcy)m_mainEplitteT.SetCalumnIiifo00,crTram.WilthO/2,10);mj-eftsplitter.£RereInfo©crFram.Height10);mi_riglktsplLtier.SfttColumiilnfo(,crFrajn-Wid+hO/4.10):m_riglitsplitter.SetColumnlnfci(1/crFraju.WidthO/4.10j;m_m:a_iusp1itiLez".R.ecalclayotlItQ
16、j此時,運行結(jié)果正常。圖2-4最終運行結(jié)果附:代碼BOOLCMainFrame:OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)(/TODO:在此添加專用代碼和/或調(diào)用基類/窗口的分割if(m_mainsplitter.CreateStatic(this,1,2)=FALSE)(returnFALSE;if(m_leftsplitter.CreateStatic(&m_mainsplitter,2,1,WS_CHILD|WS_VISIBLE,m_mainsplitter.IdFromRowCol(0,0)=FALSE)
17、(returnFALSE;if(m_rightsplitter.CreateStatic(&m_mainsplitter,1,2,WS_CHILD|WS_VISIBLE,m_mainsplitter.IdFromRowCol(0,1)=FALSE)(一returnFALSE;)if(m_leftbottom.CreateStatic(&m_leftsplitter,1,2,WS_CHILD|WS_VISIBLE,m_leftsplitter.IdFromRowCol(1,0)=FALSE)一returnFALSE;)m_isSplitter=TRUE;/綁定視圖CRectcRe
18、ct;GetClientRect(&cRect);if(m_leftsplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(cRect.Width()/2,cRect.Height()/2),pContext)=FALSE)returnFALSE;)if(m_rightsplitter.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(cRect.Width()/4,cRect.Height(),pContext)=FALSE)returnFALSE;)if(m_rightsplitter.CreateView(0,1,RUNTIME_CLASS(CSplitterTestView),CSize(cRect.Width()/4,cRect.Height(),pContext)=FALSE)returnFALSE;)if(m_leftbottom.CreateView(0,0,RUNTIME_CLASS(CSplitterTestView),CSize(cRect.Width()/4,cRec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡游戲開發(fā)及版權保護合作合同
- 難忘的語文老師:寫人作文(13篇)
- 公交公司樹形象活動方案
- 公交精神文明活動方案
- 公眾號七夕活動方案
- 快樂是一種態(tài)度作文7篇范文
- 公共法律服務活動方案
- 游東方年華游記作文600字(13篇)
- 公司k歌比賽活動方案
- 2025至2030年中國保濕平衡柔膚水行業(yè)投資前景及策略咨詢報告
- (正式版)JBT 14587-2024 膠體鉛酸蓄電池 技術規(guī)范
- 《裝配式成品支吊架安裝驗收規(guī)程》
- 支付令申請書模板:工程款支付令
- 養(yǎng)殖場消防知識講座
- 2023年10月自考00533中國古代文學作品選(二)試題及答案含評分標準
- 拖拉機駕駛員培訓(課件)
- 媒介發(fā)展史概論
- GA 2093-2023公安機關警務輔助人員工作證內(nèi)卡技術規(guī)范
- 2024年6月福建省普通高中學生學業(yè)基礎會考生物試題
- 第8課《求救信號》課件
- 某公路工程有限公司專項應急預案及某公路項目部安全生產(chǎn)應急預案
評論
0/150
提交評論