文档视图结构解析
来源:互联网 发布:阿里云 关闭云盾 编辑:程序博客网 时间:2024/05/16 18:06
theApp是一个唯一的全局变量,它的主要功能是通过调用已经被封装的WinMain主函数启动程序。
基于文档视图框架的MFC应用程序主要对象之间的相互关系,如上图所示。
1在主框架(CFrameWnd)中访问视图(CView)
GetActiveView()
功能: 返回活动的CView对象
原型: CView* GetActiveView() const;
说明: 通常使用的视图都是CView的派生类,使用派生类中的函数之前需要做一次类型转换,例如 ((CXXXView*)GetActiveView())->MyFunction();
该问题是父类指针和子类指针的问题。
2在视图(CView)中访问主框架(CFrameWnd)
GetParentFrame()
功能: 返回活动的CView对象
原型: CFrameWnd* GetParentFrame() const;
说明: 在视图中获取主框架的方法属这个最简单。
3在视图(CView)中访问文档对象(CDocumet)
GetDocument()
功能: 获取视图的文档指针
原型: CDocumnet* GetDocument() const;
说明: 使用Wizard生成文档视图结构的程序,VC会根据项目自动重载生成类似下面的代码:
#ifndef _DEBUG
inline CXXXDoc* CXXXView::GetDocumnet()
{ return (CXXXDoc*)m_pDocument; }
#endif
4在文档(CDocument)中访问视图(CView)
UpdateAllViews(NULL)
功能: 通知所有视图,文档对象已经被修改
原型: void UpdateAllViews(
CView* pSender, //要更新的视图指针,如果更新所有视图,设置为NULL
LPARAM lHint = 0L, //包含更改消息的通知
CObject* pHint = NULL)
说明: 使用中一般都使用UpdateAllViews(NULL)的形式,它调用与当前文档对象关联的所有视图的OnUpdate()虚函数。
Cdocument::AddView
功能: 用来建立一个视图对象与文档对象的连接(将视图添加在链表中,并将视图的文档指针指向该文档)。
Cdocument::GetFirstViewPosition() Cdocument::GetNextView(pos)
功能: 用来遍历视图对象
5文档模板对象 创建 文档对象
CSingleDocTemplate () CMultiDocTemplate()
功能: 框架使用构造函数生成文档对象,并且把文档、框架和视图连接起来
6文档对象 访问 文档模板对象
GetDocTemplate() GetFirstDocPosition() GetNextDoc(pos)
功能: 在SDI中,一个文档模板只能创建一个文档对象,二者一一对应,所以通过GetDocTemplate()就可以取得指向文档模板的指针;在MDI中,一个文档模板可以创建多个文档对象,每个文档模板实例都维护一个文档对象列表,用来存储与之关联的文档对象,使用GetFirstDocPosition() GetNextDoc(pos)遍历所有文档。
7少用
8文档模板对象 创建 框架窗口对象
CSingleDocTemplate () CMultiDocTemplate()
功能: 框架使用构造函数生成文档对象,并且把文档、框架和视图连接起来
9应用程序对象 通过CDocManager管理 文档模板对象
10应用程序对象 在InitInstance()中创建 文档模板对象
- 文档视图结构解析
- MFC文档视图结构解析
- 视图之UINavigationController结构解析(侧重于文档分析)
- 视图之UINavigationController结构解析(侧重于文档分析)
- 视图之UINavigationController结构解析(侧重于文档分析)
- MFC文档视图结构
- 文档与视图结构
- 理解文档/视图结构
- mfc文档视图结构
- mfc文档视图结构
- 文档视图结构
- MFC文档视图结构
- VC视图文档结构
- MFC文档视图结构解析--改造原结构--实用项目实践
- MFC文档视图结构内幕
- MFC文档视图结构内幕
- MFC文档视图结构内幕
- MFC文档视图结构内幕
- linux syslog
- TotalCommander中不能打开LNK快捷方式的解决方法
- static修饰符
- 3G无线宽带上网卡测试
- 《数据手袋》将实现复杂计算公式。
- 文档视图结构解析
- CFileDialog打开多个文件
- MaskEdit的使用
- java中调用c(c++)写的dll文件的实现及步骤(转)
- 取xml的name属性的方法
- ZOJ Problem Set - 2478 Encoding(关于getchar()的小问题)
- javascript framework, JS常用函数(方法),jQuery
- WinCE下播放MP3代码
- DataTable转换为List的通用类