Visual C++.NET編程講座之三(1) |
作者: adding■出處: yesky 第二講 文檔數(shù)據(jù)的讀取和顯示 摘要 本講先來介紹程序各個類的關(guān)聯(lián)機(jī)制,然后討論文檔的讀過程及讀操作,最后討論文檔數(shù)據(jù)的顯示方法和技巧。 程序中各用戶類的關(guān)聯(lián) 在上一講中,我們使用MFC應(yīng)用程序向?qū)?chuàng)建一個單文檔項目TextViewer?,F(xiàn)在,我們打開該項目??梢钥闯?,向?qū)門extViewer項目創(chuàng)建了以下幾個類: 應(yīng)用程序類CTextViewerApp,應(yīng)用程序必須的運(yùn)行入口,在上一講已經(jīng)討論過。 主框架窗口類CMainFrame,用來負(fù)責(zé)窗口的標(biāo)題欄、菜單、工具欄及狀態(tài)欄等界面元素的操作。 文檔類CTextViewerDoc,用來負(fù)責(zé)文檔數(shù)據(jù)的讀取和保存 視圖類CTextViewerView類,用來顯示文檔顯示,并可響應(yīng)各種類型的輸入(例如鍵盤輸入)以及實現(xiàn)打印和打印預(yù)覽等。 還有一個對話框類CAboutDlg,用來顯示該應(yīng)用程序的版本信息,是一個"關(guān)于"對話框。 需要說明的是,Visual C++ .NET將各個類的聲明保存在頭文件中,即以.h為擴(kuò)展名,而將類的實現(xiàn)代碼保存在以.cpp為擴(kuò)展名的實現(xiàn)文件中。 那么,在MFC中上述的主框架窗口類、文檔類和視圖類的關(guān)系是怎樣呢?我們來看一下。 將解決方案管理器切換到"類視圖",展開CTextViewerApp類的所有節(jié)點(diǎn),雙擊"InitInstance( void )",打開該函數(shù)代碼。由于Visual C++ .NET的代碼注釋是中文的,因此我們這里僅給出如圖1所示的代碼。 代碼中,CSingleDocTemplate是從CDocTemplate派生的單文檔類,它協(xié)調(diào)了文檔窗口、文檔和視圖的關(guān)系,并把三者聯(lián)系起來。該類的構(gòu)造函數(shù)需要指定四個參數(shù),分別為表示菜單和加速鍵等的資源ID號以及三個由宏RUNTIME_CLASS指定的CRuntimeClass結(jié)構(gòu)對象指針,它們分別是程序的文檔類、框架窗口類和視圖類的結(jié)構(gòu)指針。 CRuntimeClass結(jié)構(gòu)反映一個運(yùn)行時類的信息,通常用宏RUNTIME_CLASS來獲取一個類的CRuntimeClass結(jié)構(gòu)指針。Visual C++借助CRuntimeClass類結(jié)構(gòu)能在應(yīng)用程序運(yùn)行過程中獲得該類對象及其基類的相關(guān)信息,從而可以實現(xiàn)運(yùn)行時類型檢查(Run Time Type Inspection,RTTI)。 AddDocTemplate用來將指定的單文檔模板或多文檔模板指針添加到程序所包含內(nèi)部的文檔模板指針列表中。 |