資源描述:
《MFC實驗六 文檔視圖和單文檔界面》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗六文檔/視圖和單文檔界面1.創(chuàng)建一個單文檔界面應(yīng)用程序,項目名設(shè)置為wx03.2.在文檔類CWx03Doc中添加數(shù)據(jù)成員用于保存應(yīng)用程序的數(shù)據(jù)。二維數(shù)組m_clrGrid用于保存每個方格的顏色,數(shù)據(jù)成員m_clrCurrentColor用于保存方格被單擊時賦給方格的顏色。3.在文檔類CWx03Doc的OnNewDocument函數(shù)中對數(shù)據(jù)成員進(jìn)行初始化:4.向類wx03Doc添加三個成員函數(shù),如下:函數(shù)定義如下:GetCurrentColor、GetSquare和SetSquare作為文檔和視圖之間的橋梁,視
2、圖對象通過它們可以訪問文檔的保護(hù)成員。1.編輯CWx03View的OnDraw函數(shù),在視圖窗口中繪制網(wǎng)格,并根據(jù)文檔類中保存的方格顏色來設(shè)置方格的顏色。1.在視圖類CWx03View中添加消息處理函數(shù)WM_LBUTTONDOWN的處理函數(shù):2.利用菜單編輯器編輯個添加如下菜單,各菜單的屬性設(shè)置如下表:ID標(biāo)題(Caption)ID_EDIT_CLEARALL清除所有方格ID_COLOR_RED紅色(&R)ID_COLOR_GREEN綠色(&G)ID_COLOR_BLUE藍(lán)色(&B)ID_COLOR_CUSTOM自
3、定義...3.在派生文本類中重載DeleteContents函數(shù),用于清除所有方格內(nèi)的顏色。1.為添加的菜單項添加命令消息處理函數(shù)和用戶界面更新命令處理函數(shù)。由于這些函數(shù)都是針對文檔數(shù)據(jù)的操作,因此將這些菜單命令的消息處理函數(shù)添加在文檔類中。1.編譯、鏈接和運行程序,結(jié)果如下:2.添加序列化功能,將各個方格的顏色以及當(dāng)前顏色存入文件,并允許從文件中讀取。1.編寫一個SDI程序,可以用鼠標(biāo)在視圖窗口中劃線,并能將所畫的線條保存。2.定義一個新類Cline。3.編輯類Cline,在其中添加相應(yīng)的數(shù)據(jù)成員和成員函數(shù)。1
4、.在文檔類中添加保存線段的數(shù)組。在頭文件wx03Doc.h中添加如下的數(shù)據(jù)成員和成員函數(shù),并包含定義類Cline的頭文件和使用MFC模板類時需要的頭文件:在文檔類的實現(xiàn)文件中編寫添加的成員函數(shù):1.當(dāng)在視圖窗口中按下鼠標(biāo)右鍵時開始畫線,鼠標(biāo)右鍵抬起時完成線段的繪制,在鼠標(biāo)移動的過程中畫橡皮筋線。因此需要記錄劃線的起點和終點并設(shè)置畫橡皮筋線的跟蹤標(biāo)志。畫橡皮筋線時,需要將原來的線條刪除,重新畫一條從起點到當(dāng)前鼠標(biāo)指針坐標(biāo)的線條,最簡單的辦法是使用R2_NOT繪圖模式反轉(zhuǎn)線條。在視圖類CWx03View中添加如下的數(shù)
5、據(jù)成員和成員函數(shù):在視圖類CWx03View的實現(xiàn)文件中編寫函數(shù)InvertLine:視圖類中添加鼠標(biāo)消息WM_RBUTTONDOWN、WM_MOUSEMOVE和WM_RBUTTONUP的處理函數(shù)并添加如下代碼:1.為了在改變窗口大小或最小化后重新打開窗口,或在被覆蓋后重新顯示時保留原有的圖形,必須在OnDraw函數(shù)中重新繪制文檔中線段數(shù)組中的線段。2.在定義類Cline時實現(xiàn)了類的序列化,但只是一條線段的序列化,還必須保存文檔類的數(shù)據(jù)。編寫文檔類wx03Doc的Serialize函數(shù),完成對線段數(shù)組的序列化。3
6、.在文檔類中重載DeleteContents函數(shù):1.編譯、鏈接和運行程序,用鼠標(biāo)在視圖窗口中畫線并測試保存、新建、打開等命令,運行結(jié)果如圖所示:2.為wx03增加滾動視圖功能。執(zhí)行Edit->Replace菜單命令,將視圖類CWx03View頭文件中所有Cview替換成CScrollView,同樣將實現(xiàn)文件中的所有Cview替換成CScrollView。3.在視圖類CWx03View中重載虛函數(shù)OnInitialUpdate,編輯該函數(shù)。4.修改鼠標(biāo)消息處理函數(shù),進(jìn)行設(shè)備坐標(biāo)與邏輯坐標(biāo)之間的轉(zhuǎn)換。在文檔類中保存
7、的線段坐標(biāo)是邏輯坐標(biāo),當(dāng)窗口改變大小或滾動后,調(diào)用OnDraw重繪的線段使用的是邏輯坐標(biāo)。1.在視圖中畫橢圓。在視圖類wx03View中增加兩個數(shù)據(jù)成員,分別保存橢圓的外接矩形和顏色,同時在構(gòu)造函數(shù)中進(jìn)行初始化。2.編輯視圖類的OnDraw函數(shù),繪制橢圓:1.在視圖類中添加WM_LBUTTONDBLCLK消息處理函數(shù),當(dāng)在橢圓內(nèi)雙擊時,改變橢圓的顏色:2.編譯、鏈接和運行程序如下: