托管C++程序开发—Win表单文档程序设计(中)

2016-01-29 12:41 14 1 收藏

托管C++程序开发—Win表单文档程序设计(中),托管C++程序开发—Win表单文档程序设计(中)

【 tulaoshi.com - C语言心得技巧 】

  幸好,我们对MFC的文档、视图和框架类之间的联系的作用有了一定的了解,因此编写托管C++的文档应用程序倒觉得不那么复杂。那么,事情该如何进行呢?

  一、.NET框架中文档应用程序的机制

  .NET框架只提供多文档应用程序的机制,这是因为在单文档应用程序中,文档窗口可以用相应的控件来代替(如上一篇的综合示例),由于视图也是一个窗口,因此.NET框架没有“视图类”的概念,也没有“单文档”概念,也就是说.NET框架不再使用MFC的“文档/视图”机制。.NET框架使用下列的文档应用程序的创建机制:

  1、主框架窗口的创建

  MDI(多文档)应用程序的主框架窗口与前面所说的Win表单窗口没有太大的区别,所不同的是:这里的主框架窗口只是将其IsMdiContainer属性设置为true。通常菜单栏、工具栏和状态栏也在此窗口中添加,添加的方法前面已介绍过。

  2、子窗口的创建

  子窗口也称MDI的文档窗口,它也是从Form类派生而来,它的设计和构造方法同一般Win表单窗口是一样的,可以添加相应的控件。由于MDI的文档窗口是属于主框架窗口的,因此在具体实例化的时候要指定相应的MDIParent。

  3、文档窗口的操作

  .NET框架对MDI中的文档窗口提供了直接的支持,这包括文档窗口的布局显示、在菜单中显示出文档窗口列表以及当前文档窗口的获得等,下面分别讨论。

  (1) 文档窗口的布局显示

  在Form类中包含一个LayoutMdi方法,允许用户在主框架窗口调用方法使用所有的文档窗口按一定的方式排列布局,其参数可以是:

  MdiLayout::ArrangeIcons —— 在主框架窗口的客户区中显示各个文档窗口的图标
  MdiLayout::Cascade —— 层叠显示
  MdiLayout::TileHorizontal —— 在主框架窗口的客户区中从上到下显示各个文档窗口
  MdiLayout::TileVertical —— 在主框架窗口的客户区中从左到右显示各个文档窗口

  (2) 在菜单中显示出文档窗口列表

  想要在主框架中的某个菜单项显示出所有文档窗口,以便通过菜单项切换相应的文档窗口,.NET框架提供最直接也是最简单的方法,只要将该菜单项的MdiList属性设为true即可。

  (3) 当前文档窗口的获得

  当向文档窗口传送数据或进行相关文档操作时,都可能需要获取当前文档窗口的指针以便进行相关操作。当前文档窗口的获得是通过主框架窗口的ActiveMDIChild属性来实现的。例如下面的代码:

Form *curChild = this->ActiveMdiChild;

来源:https://www.tulaoshi.com/n/20160129/1487202.html

延伸阅读
简介 C++/CLI代表 ISO-C++标准语言的一个动态编程泛型扩展 (dynamic programming paradigm extension)。在原版语言设计 (V1) 中有许多显著的弱点,我们觉得在修订版语言设计 (V2) 中已经修正了这些弱点。本文列举了 V1 版本语言的功能和它们在 V2 版本中的对应功能(如果存在);并指出了其对应功能不存在的构造。对于有兴趣的读者,可以查看附...
本篇说明内容是C++中的要害,基本大部分人对于这些内容都是昏的,但这些内容又是编程的基础中的基础,必须具体说明。 数字表示 !-- frame contents -- !-- /frame contents -- 数学中,数只有数值大小的不同,绝不会有数值占用空间的区别,即数学中的数是逻辑上的一个概念,但电脑不是。考虑算盘,每个算盘...
本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基础。同样,在C++中,所有的代码都是通过标识符(Identifier)、表达式(EXPression)和语句(Statement)及一些必要的符号(如大括号等)组成,在此先说明何谓标识符。 !-- frame contents -- !-- /frame contents -- 标识符 标识符是一个字母序列...
六年前,我刚热恋“面向对象”(Object-Oriented)时,一口气记住了近十个定义。六年后,我从几十万行程序中滚爬出来预备写点心得体会时,却无法解释什么是“面向对象”,就象说不清楚什么是数学那样。 软件工程中的时髦术语“面向对象分析”和“面向对象设计”,通常是针对“需求分析”和“系统设计”环节的。“面向对象”有几大学派,就象如来...
赋值语句 前面已经说明,要访问内存,就需要相应的地址以表明访问哪块内存,而变量是一个映射,因此变量名就相当于一个地址。对于内存的操作,在一般情况下就只有读取内存中的数值和将数值写入内存(不考虑分配和释放内存),在C++中,为了将一数值写入某变量对应的地址所标识的内存中(出于简便,以后称变量a对应的地址为变量a的地址...

经验教程

78

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部