学习文档视图编程的第一个demo,程序比较简单,主要对文档模板,文档,视图等相互关系的一个了解。

功能:菜单添加一个[操作]项,然后新建四份空白文档,点击[操作]之后,在四份空白文档上面各绘制一个Button按钮。

思路:

经过应用程序的InitInstance()函数调用,事实上已经产生了两个结果

第一:建立了一个多文档模板,也就是一份MultiDocTemplate。
第二:同时,创建了一份框架、视图和Document。(也就是新建一份空白没有任何内容的三组内容)

文档模板即是打开文件的相关格式的规则约定等等,比如一个应用程序可以打开文本txt格式,也可以打开一幅图片,那么文本和图片就是两种不同的文档模板。再比如像NotePad这样的软件,可以打开几十种文件格式。

文档模板挂接了后面要介绍的文档、视图和框架窗口,使得它们得以互相关联。通过文档模板,程序确定了创建或打开一个文档时,以什么样的视图和框架窗口来显示。文档模板依靠保存相互对应的文档、视图和框架窗口的CRuntimeClass对象指针来实现上述挂接,这就是文档模板类中的成员变量m_pDocClass、m_pFrameClass、m_pViewClass的由来。实际上,对m_pDocClass、m_pFrameClass、m_pViewClass的赋值在CDocTemplate类的构造函数中实施。引:《轻松玩转MFC文档视图编程》

如果定义了多种文档模板,这些模板通过CDocManager这种对象管理。

CDocManager对象存在于应用程序对象中。

void CBbaadView::OnPp() //视图类中的成员函数,响应【操作】菜单
{
CBbaadDoc *doc=GetDocument();
CMultiDocTemplate *multi=(CMultiDocTemplate *)doc->GetDocTemplate();
POSITION p1=multi->GetFirstDocPosition();
while(p1)
{
CDocument *pDocument=multi->GetNextDoc(p1);
POSITION p2=pDocument->GetFirstViewPosition();
while(p2)
{
CBbaadView *view=(CBbaadView*)pDocument->GetNextView(p2);
view->AddBtn();
}
} } void CBbaadView::AddBtn()//视图类中的成员函数,绘制按钮
{
btn[i].Create("按钮",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(,,,),this,);
btn[i].ShowWindow(SW_SHOWNORMAL);
i++;
}

文档/视图(01):第一个Demo的更多相关文章

  1. 深入分析MFC文档视图结构(项目实践)

    k_eckel:http://www.mscenter.edu.cn/blog/k_eckel 文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer ...

  2. MFC单文档视图程序简介

    在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...

  3. DotNetBar中dotNetBarManager设置窗口 实现单文档视图界面

    本人想设计一个但文档视图的界面: |--------------------------------------------------------------- |   Ribbon Bar |-- ...

  4. mfc创建文档视图过程

    一.如何创建文档视图界面: 创建新的文档视图界面,只需要调用CDocTemplate::OpenDocumentFile(strpath)即可.(strpath为要打开的文档路径,如果是NULL,则生 ...

  5. MFC中 创建基于CFormView的文档视图程序

    在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...

  6. 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序

    在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...

  7. MFC文档视图结构学习笔记

    文档/视图概述 为了统一和简化数据处理方法,Microsoft公司在MFC中提出了文档/视图结构的概念,其产品Word就是典型的文档/视图结构应用程序 MFC通过其文档类和视图类提供了大量有关数据处理 ...

  8. MFC文档视图中窗口切换 (2012-05-11 18:32:48)

    在文档试图应用程序,有时需要在工作区切换试图,以下就是如何切换试图了 .创建要切换的视图类,同时把构造函数,Create函数改变为public .在需要切换试图的动作响应中,加入切换代码,一般是在CM ...

  9. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. jsplumb流程器使用2

    jsplumb默认注册在浏览器的窗口,为整个页面提供静态实例 1. 单独实例化的方法: var firstInstance = jsPlumb.getInstance(); 内部传入可定义对象   全 ...

  2. error:cv_bridge---opencv和ros连接起来的桥

    有多个warning出现...版本冲突 解决办法: cv_bridge[opencv和ros连接起来的桥],默认依赖的opencv版本是2.4.8,如果安装了新的opencv版本,比如3.1.0,那么 ...

  3. 因为要生成的折线数量是不定的 ,所以需要echarts 动态的为option中的Series添加数据

    series:function(){ var serie=[]; var aa = zhonglei[0].split(","); for( var i=0;i < aa.l ...

  4. SSI服务端包含技术

    1.页面拆出来怎么样通过web服务浏览呢? 使用web服务(例如nginx)的SSI技术,将多个子页面合并渲染输出. 2.SSI是什么? 3. ssi包含类似于jsp页面中的incluce指令,ssi ...

  5. 访问WebServcie遇到配额不足的时候,请增加配额

    常常遇到的报错: 1.错误一: Error in deserializing body of reply message for operation 'GetArticleInfo'.,StackTr ...

  6. DevExpress之TreeList节点绑定图片

    最近在项目中使用到了DX中的TreeList控件绑定数据源时在每个节点前显示特点的图片:查阅相关资料实现方法如下:1.首先打开VS2010新建一个WINFROM应用程序: 2.在WINFROM应用程序 ...

  7. (转)easyui datagrid 部分参数说明

    easyui datagrid 部分参数 数据表格属性(DataGrid Properties) 属性继承控制面板,以下是数据表格独有的属性. 名称 类型 描述 默认值 columns array 数 ...

  8. Java VisualVM 插件地址

    打开Java VisualVM检查更新插件时,默认的连接连不上,通过浏览器访问之后发现默认的服务器已经404,新地址已经迁移到github,下面这个地址里面有不同版本jdk对应的插件中心地址. htt ...

  9. hdu 1198 (并查集 or dfs) Farm Irrigation

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1198 有题目图11种土地块,块中的绿色线条为土地块中修好的水渠,现在一片土地由上述的各种土地块组成,需要浇 ...

  10. spring batch批处理框架学习

    内如主要来自以下链接: http://www.importnew.com/26177.html http://www.infoq.com/cn/articles/analysis-of-large-d ...