在练习了前面两个实验以后,略微对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(),应用程序在打印和打印预览时将调用此函数。
终于摸清一点眉目了,好辛苦啊!