MFC练习小结:单文本文档

来源:互联网 发布:php 五子棋源代码 编辑:程序博客网 时间:2024/05/28 05:14

在练习了前面两个实验以后,略微对MFC的单文本文档(SDI)有所了解,现总结如下:

1、生成一个单文本文档会有CAboutDlg帮助类、CMainFrame主框架类、C"文件名"App应用类、C"文件名"Doc文档类、C"文件名"View视类等基本的几大类。

用→表示派生的话,有如下的关系

CFrameWndCMainFrame,主程序窗口

CWinAppCSDIApp,程序初始化与收尾工作

CDocumentCSDIDoc,存放程序数据并在磁盘上读写

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(),应用程序在打印和打印预览时将调用此函数。

终于摸清一点眉目了,好辛苦啊!