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