




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)五、文檔-視圖編程實(shí)驗(yàn)?zāi)康模?、 了解windows MDI程序的文檔模板類的作用。2、 掌握windows 程序文檔-視圖框架的程序設(shè)計(jì)原理。3、 知道視圖的切分方法和單文檔多視圖的消息處理。實(shí)驗(yàn)要求:建立一個(gè)windows MDI(多文檔)應(yīng)用程序,利用視圖切分實(shí)現(xiàn)對(duì)文檔中管理的字符串和色彩數(shù)據(jù)的多種視圖的不同控制。實(shí)驗(yàn)指導(dǎo):一、 在VC+6.0環(huán)境中建立一個(gè)多文檔工程。在文檔中添加屬性項(xiàng):public:CString m_strData; / string textCOLORREF m_colorData; / color for the string text重載OnNewDocu
2、ment()并添加數(shù)據(jù)初始化代碼:BOOL CMultiViewDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: add reinitialization code here/ (SDI documents will reuse this document)m_strData = "Sample Data String"m_colorData = RGB(0, 0, 0);return TRUE;二、 在工程中添加另外兩個(gè)視圖類,一個(gè)視圖用于控制顯示的數(shù)據(jù)項(xiàng)的設(shè)置,一個(gè)視圖用于顏色的顯
3、示。原來(lái)已生成的視圖則顯示字符串。1. 利用資源編輯器添加一個(gè)如圖所示的對(duì)話框資源,注意對(duì)話框的風(fēng)格設(shè)為Child類型。并在此基礎(chǔ)上利用ClassWizard生成一個(gè)基于CFormView的視圖類。在視圖中添加與文檔相關(guān)的獲取文檔指針的方法,并添加控件的變量和對(duì)控件的消息映射處理。.h文件public:/AFX_DATA(CControlView)enum IDD = IDD_DIALOG1 ;CStringm_str;intm_iColor;/AFX_DATApublic:C*Doc* GetDocument();/ Overrides/ ClassWizard generated virt
4、ual function overrides/AFX_VIRTUAL(CControlView)protected:virtual void DoDataExchange(CDataExchange* pDX);virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);/AFX_VIRTUAL.cpp文件C*Doc* C*View:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(C*Doc
5、);return (C*Doc*)m_pDocument;void C*View:OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) / TODO: Add your specialized code here and/or call the base classC*Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);m_str = pDoc->m_strData;if (pDoc->m_colorData = RGB(255, 0, 0)m_iColor = 0;else if (pD
6、oc->m_colorData = RGB(0, 255, 0)m_iColor = 1;else if (pDoc->m_colorData = RGB(0, 0, 255)m_iColor = 2;elsem_iColor = -1;UpdateData(FALSE);void C*View:OnDataChange() if (!UpdateData()return;C*Doc* pDoc = GetDocument();COLORREF color = RGB(255 * (m_iColor = 0),255 * (m_iColor = 1),255 * (m_iColor
7、 = 2);BOOL bUpdate = FALSE;if (m_str != pDoc->m_strData)pDoc->m_strData = m_str;bUpdate = TRUE;if (color != pDoc->m_colorData)pDoc->m_colorData = color;bUpdate = TRUE;if (bUpdate)/ 更新所有視圖pDoc->UpdateAllViews(this);2. 添加另一個(gè)基于CView類的視圖,并同樣添加獲取文檔指針的方法和OnDraw()函數(shù)中的代碼。void C*View:OnDraw(CD
8、C* pDC)C*Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code hereCRect rect;GetClientRect(rect);CBrush br(pDoc->m_colorData);pDC->FillRect(rect, &br);3. 在原來(lái)工程生成的基于CView類的視圖中添加OnDraw()函數(shù)中的代碼用于文本的顯示。void CMultiViewView:OnDraw(CDC* pDC)CMultiViewDoc* pDoc = GetDocument();ASSERT
9、_VALID(pDoc);CRect rect;GetClientRect(rect);pDC->SetTextAlign(TA_BASELINE | TA_CENTER);pDC->SetTextColor(pDoc->m_colorData);pDC->SetBkMode(TRANSPARENT);/ center in the windowpDC->TextOut(rect.Width() / 2, rect.Height() / 2,pDoc->m_strData, pDoc->m_strData.GetLength();三、 在CChildF
10、rame類中添加與視圖切分相關(guān)的屬性項(xiàng)和切分代碼,注意包含相關(guān)頭文件。.h文件/ Attributespublic:CSplitterWnd m_wndSplitter1;CSplitterWnd m_wndSplitter2;.cpp文件BOOL CChildFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) / 靜態(tài)切分if (!m_wndSplitter1.CreateStatic(this, 1, 2)TRACE0("Failed to CreateStaticSplittern")
11、;return FALSE;/創(chuàng)建控制視圖if (!m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(C*View),CSize(250, 100), pContext)TRACE0("Failed to create first panen");return FALSE;/對(duì)另一窗片的二次切分if (!m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1,WS_CHILD | WS_VISIBLE | WS_BORDER,m_wndSplitter1.IdFromRowCol(0
12、, 1) )TRACE0("Failed to create nested splittern");return FALSE;int cyText = max(lpcs->cy - 70, 20);/字符串顯示視圖的創(chuàng)建if (!m_wndSplitter2.CreateView(0, 0,RUNTIME_CLASS(C*View), CSize(0, cyText), pContext)TRACE0("Failed to create second panen");return FALSE;/顏色顯示視圖的創(chuàng)建if (!m_wndSplitter2.CreateView(1, 0,RUNTIME_CLASS(C*Vi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度金融資產(chǎn)抵押合同全新制定
- 2025年度能源行業(yè)就業(yè)合同書模板
- 二零二五年度企業(yè)年報(bào)翻譯與發(fā)布合同
- 建筑公司2025年度建筑材料倉(cāng)儲(chǔ)與物流服務(wù)合同
- 防水鞋企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 2025年度電商貨物配送與倉(cāng)儲(chǔ)管理合同模板
- 二零二五年度體育俱樂(lè)部退休教練員聘用合同
- 酸梅醬企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 母嬰用品個(gè)性化包裝設(shè)計(jì)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 水果罐頭食品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 金茂入職前的在線測(cè)評(píng)題
- 廣東省佛山市2024年中考英語(yǔ)模擬試卷(含答案)
- ISO14644國(guó)際標(biāo)準(zhǔn)(中文版)
- DB22T 1189.2-2011 無(wú)公害農(nóng)產(chǎn)品 天麻 第2部分:種子與種麻生產(chǎn)技術(shù)規(guī)程
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 2024社工(初)《社會(huì)工作實(shí)務(wù)》考試題庫(kù)附答案
- 2024年蘭州市高三診斷考試(一診)數(shù)學(xué)試卷(含答案)
- 辦公耗材采購(gòu)服務(wù)方案(技術(shù)方案)
- (高清版)JTGT 5532-2023 公路橋梁支座和伸縮裝置養(yǎng)護(hù)與更換技術(shù)規(guī)范
- 廣東省廣州市越秀區(qū)2022-2023學(xué)年六年級(jí)下學(xué)期期末數(shù)學(xué)試卷
- 《成功之路+進(jìn)步篇+1》第1課課件
評(píng)論
0/150
提交評(píng)論