| Visual C++.NET編程講座之三(5) |
| 2. 使用編輯控件 "編輯控件"是一個(gè)可以讓用戶(hù)從鍵盤(pán)輸入和編輯文本的控件,通過(guò)它可以輸入各種文本、數字或者口令,也可使用它來(lái)編輯和修改簡(jiǎn)單的文本內容。MFC類(lèi)CEdit封裝了編輯控件的全部操作。 使用編輯控件實(shí)現文檔數據的顯示的思路是,先在視圖中創(chuàng )建一個(gè)與視圖客戶(hù)區大小相同的編輯控件,然后把文檔的文本內容轉送到編輯控件中。這里的視圖客戶(hù)區是指除了窗口標題欄、菜單欄、工具欄、狀態(tài)欄以及邊框之外的部分。簡(jiǎn)單地說(shuō),就是默認的背景色為白色的區域。 實(shí)現的步驟如下: (1) 為CTextViewerView類(lèi)添加成員變量CEdit* m_ctrlEdit。這是一個(gè)指針變量,用"添加成員變量向導"添加時(shí),要在"變量類(lèi)型"框加輸入"CEdit*"(雙引號不輸入,注意其中的星號),而在"變量名"中輸入m_ctrlEdit。 (2) 為CTextViewerView類(lèi)添加OnInitialUpdate函數的重寫(xiě),并添加如圖10所示的代碼(加框部分)。 new和delete分別用來(lái)為類(lèi)對象分配和釋放內存空間。為了避免m_ctrlEdit內存空間重復分配,我們在new操作前,要先將m_ctrlEdit內存空間釋放。 當框架將文檔與視圖關(guān)聯(lián),且視圖將要顯示時(shí)調用OnInitialUpdate函數,因此我們將視圖的一些初始化代碼添加到這里。 (3) 在CTextViewerView析構函數中添加m_ctrlEdit內存空間釋放的語(yǔ)句: if ( m_ctrlEdit ) delete m_ctrlEdit; (4) 由于視圖大小改變后,編輯控件的大小也應隨之改變,因此我們需要跟蹤窗口的WM_SIZE消息,只要窗口大小發(fā)生改變后,都會(huì )發(fā)送這個(gè)消息。單擊CTextViewerView類(lèi)屬性窗口中的"消息"按鈕,添加WM_SIZE消息映射。如圖11所示。 (5) 在消息映射函數CTextViewerView::OnSize中添加如圖12所示的代碼。 (6) 運行程序,打開(kāi)當前文件夾下的ReadMe.txt文件,結果如圖13所示。 評述:這種方法雖然也比較簡(jiǎn)單,且具有文本的編輯功能,但文本顯示的格式還很單調,例如它的行間距和字間距無(wú)法調整,更主要的是視圖的繪制功能無(wú)法起作用。 |
聯(lián)系客服