在練習了前面兩個實驗以後,略微對MFC的單文本文檔(SDI)有所瞭解,現總結如下:
1、生成一個單文本文檔會有CAboutDlg幫助類、CMainFrame主框架類、C"文件名"App應用類、C"文件名"Doc文檔類、C"文件名"View視類等基本的幾大類。
用→表示派生的話,有如下的關係
CFrameWnd→CMainFrame,主程序窗口
CWinApp→CSDIApp,程序初始化與收尾工作
CDocument→CSDIDoc,存放程序數據並在磁盤上讀寫
CView→CSDIView,程序數據顯示並處理用戶輸入
//下爲附加的一些介紹,根據需要在應用嚮導第六步進行選擇
//CEditView,文本編輯
//CScrollView,視察滾動條
//CRecordView,數據庫存取
//CHtmlView,視察顯示超文本
//CFormView,視察放置控件
//CTreeView,以顯示樹狀數據
//CListView,顯示列表數據
//CRichEditView,支持更多的文本編輯,支持RPT
上述四個基本類相互調用公有函數和發送消息進行通信 ,程序任何位置都可使用全局函數AfxGetApp()取得指向應用類對象的指針,通過應用類的GetMainWnd()得到主框架窗口指針,在視類中使用GetDocument()取得文檔類對象指針,如:
CSDIApp *pApp = (CSDIApp*) AfxGetApp();
CMainFrame *pMainFrame = (CMainFrame*) pApp->GetMainWnd();
CSDIDoc *pDoc = GetDocument();
2、文檔類和視類中的主要函數
①CDocument類中的主要函數
UpDateAllviews(),一個文檔對應多個視,可用此函數通知每個與此相關的視,表示此文檔已經被修改,每個視調用自己的OnUpdate()進行更新;
OnNewDocument(),當使用“新建”命令時,應用程序調用此函數,並通過它調用DeleteContent()使文檔清空。在單文本文檔中,應用程序用此函數重新初始化現有文檔;而在多文本文檔中,應用程序框架將建立一個新的文檔並調用此函數進行初始化;
OnOpenDocument(),當使用“打開”命令時,應用程序調用此函數打開指定文件,並通過它調用DeleteContent()進行清空。在單文本文檔與多文本文檔當中,類似於上述OnNewDocument();
②CView類中的主要函數
OnDraw(),應用程序調用此函數進行屏幕顯示、打印和打印預覽,當視的窗口重畫時,也要調用它;
GetDocument(),通過此函數獲得指向當前視所對應的文檔類指針,使用這個指針調用文檔類的公有成員;
OnUpdate(),視類對應的文檔數據被修改後,調用此函數進行更新,此函數也被文檔類中的UpDateAllviews()調用;
OnPrint(),應用程序在打印和打印預覽時將調用此函數。
終於摸清一點眉目了,好辛苦啊!