112,1 CWinApp类 CWinApp类代表主程序, CWinApp本身是不可见的,它 负责维护进程的启动、终止、消息循环、命令行参数 资源管理 成员 描述 m pszappName 应用程序名 命令行参数 部分 M lpCmdLine I pMainWn d 应用程序主窗口指针 主要 I PszEXEName 可执行文件名 成员 M pszProfileName配置INI文件名 M_ pszRegistrKey配置注册表主键值 LoadCursor 加载光标资源 Loadicon 加载图标资源
11 11.2.1 CWinApp 类 CWinApp类代表主程序,CWinApp本身是不可见的,它 负责维护进程的启动、终止、消息循环、命令行参数、 资源管理 成员 描述 m_pszAppName 应用程序名 M_lpCmdLine 命令行参数 M_pMainWnd 应用程序主窗口指针 M_pszExeName 可执行文件名 M_pszProfileName 配置INI文件名 M_pszRegistrKey 配置注册表主键值 LoadCursor 加载光标资源 LoadIcon 加载图标资源 部分 主要 成员
1122 CDocument类| CCmd Target CDocument CDocument的一般方法 方法 说明 GetTitleo 获得文档标题 SetTitleo 设置文档标题 GetPathName o 获得文档数据文件的路径字符串 SetPathName o 设置文档数据文件的路径字符串 GetDocTe皿 plate(获得指向描述文档类型的文档模板的指针 AddViewo 对与文档相关联的视图列表添加指定的视图 RemoveViewo 从文档视图列表中删除视图 UpdateAllViewso通知所有视图,文档己被修改,应重画 DisconnectViewso使文档与视图相分离 GetFileo 获得指向 CFile类型的指针
12 11.2.2 CDocument类 CDocument 的一般方法 方法 说明 GetTitle() 获得文档标题 SetTitle() 设置文档标题 GetPathName() 获得文档数据文件的路径字符串 SetPathName() 设置文档数据文件的路径字符串 GetDocTemplate() 获得指向描述文档类型的文档模板的指针 AddView() 对与文档相关联的视图列表添加指定的视图 RemoveView() 从文档视图列表中删除视图 UpdateAllViews() 通知所有视图,文档己被修改,应重画 DisconnectViews() 使文档与视图相分离 GetFile() 获得指向 CFile 类型的指针
CDocument的虚拟方法 方法 说明 OnNewDocument o 由MFC调用来建立文档 OnOpenDocument 00 由MFC调用来打开文档 On SaveDocument 由MC调用来保存文档 OnClose Document o 由MC调用来关闭文档 CanCloseFrame o 确定观察文档的框架窗口是否被允许关闭 DeleteContentso 在未撤消文档对象时删除文档数据 ReleaseFileo 释放文件以允许其它应用程序使用 SaveModified o 查询文档的修改状态并存储修改的文档 IsModified o 确定文档从它最后一次存储后是否被修订过 SetModifiedFlago 设置文档从它最后一次存储后是否被修订过的布尔值 GetFirstViewPosition o获得视图列表头的位置 GetNextViewo 获得视图列表的下一个视图 最常用的是 SetModifiedFlag和 lUpdateAllViews0。文档内容被修改 后,一般要调用 SetModifiedFlag0来设定一个标志。 UpdateAllView( 刷新所有和文档关联的视图。实际上该函数调用各个视图类的 OnUpdate0函数。这样做可以保证各个视图之间的同步。 13
13 CDocument 的虚拟方法 方法 说明 OnNewDocument() 由 MFC 调用来建立文档 OnOpenDocument() 由 MFC 调用来打开文档 OnSaveDocument() 由 MFC 调用来保存文档 OnCloseDocument() 由 MFC 调用来关闭文档 CanCloseFrame() 确定观察文档的框架窗口是否被允许关闭 DeleteContents() 在未撤消文档对象时删除文档数据 ReleaseFile() 释放文件以允许其它应用程序使用 SaveModified() 查询文档的修改状态并存储修改的文档 IsModified() 确定文档从它最后一次存储后是否被修订过 SetModifiedFlag() 设置文档从它最后一次存储后是否被修订过的布尔值 GetFirstViewPosition() 获得视图列表头的位置 GetNextView() 获得视图列表的下一个视图 最常用的是SetModifiedFlag()和UpdateAllViews()。文档内容被修改 后,一般要调用SetModifiedFlag()来设定一个标志。UpdateAllView() 刷新所有和文档关联的视图。实际上该函数调用各个视图类的 OnUpdate()函数。这样做可以保证各个视图之间的同步
用户可通过函数 GetFirstview Positio和 GetNextView(得到和文 档关联的视图的指针,代码如下: PoST| oN pos= GetFirstView Position(;∥得到视图列表头的位置 While(pos != NULl CView' pView= GetNextview(pos);/获得视图列表中的视图指针 DOcumen类在现在流行的Mvc( Modal、View、 Control)设计模 式中相当于其中的 Modal,表示抽象数据模型。 文档最主要的功能如下: 打开保存文档 维护文档相关的视图列表 1维护文档修改标志 通过电子邮件发送文档 用户修改文档数据时,调用 SetModifiedFlag方法来标志数据被更 改过。当程序关闭该文档关联的最后一个视图的时候,文档会自 动提示你保存修改
14 用户可通过函数GetFirstViewPosition()和GetNextView()得到和文 档关联的视图的指针,代码如下: POSITION pos = GetFirstViewPosition(); //得到视图列表头的位置 While(pos != NULL) { CView *pView = GetNextView(pos); //获得视图列表中的视图指针 … } CDocument类在现在流行的MVC(Modal、View、Control)设计模 式中相当于其中的Modal,表示抽象数据模型。 文档最主要的功能如下: l 打开保存文档 l 维护文档相关的视图列表 l 维护文档修改标志 l 通过电子邮件发送文档 用户修改文档数据时,调用SetModifiedFlag方法来标志数据被更 改过。当程序关闭该文档关联的最后一个视图的时候,文档会自 动提示你保存修改
从 CDocument类派生新的文档类的一般过程如下: 为每一个文档类型从 CDocument类派生一个相应的文档类。 为文档类添加成员变量,这些变量主要用来保存文档的数据, 并使其它的对象(如视图对象)可以访问这些成员变量,从而实 现文档和视图的相互搭配使用。 重载 Serialize成员函数,实现文档数据的串行化。 无论是保存文档或是打开文档,应用程序都是通过 调用文档类的 Serialize串行化成员函数来完成操作的。 因此,在大多数情况下,我们都需要重载 Serialize成员 函数。 Serialize成员函数带有一个 CArchive类型的参数, 这是一个与所打开的文件相关联的对象。一般情况下, 总是使用 CArchive对象来保存和打开文档
15 从CDocument类派生新的文档类的一般过程如下: •为每一个文档类型从CDocument类派生一个相应的文档类。 •为文档类添加成员变量,这些变量主要用来保存文档的数据, 并使其它的对象(如视图对象)可以访问这些成员变量,从而实 现文档和视图的相互搭配使用。 •重载Serialize成员函数,实现文档数据的串行化。 无论是保存文档或是打开文档,应用程序都是通过 调用文档类的Serialize串行化成员函数来完成操作的。 因此,在大多数情况下,我们都需要重载Serialize成员 函数。Serialize成员函数带有一个CArchive类型的参数, 这是一个与所打开的文件相关联的对象。一般情况下, 总是使用CArchive对象来保存和打开文档