您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

托管C++程序开发—Win表单文档程序设计(中)
2002-05-20· ·Adding··yesky

1 2  下一页


  曾经,不少程序员对Visual C++中的MFC编程方式抨击很多,其最主要原因可能就是:MFC对应用程序代码封装太多,使得大多数人很难理解其内部的工作方式。现在,我倒留念起这种编程方式,因为在托管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;

1 2  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 Managed C++设计新邮件检查器
 C++ 代码优化
 论C/C++程序员的门户之见
 托管C++程序开发—Win表单文档程序设计(下)
 用托管C++开发Win表单的一般方法
 Visual C++ .NET编程:托管C++概述
 在VC++中获取Agent角色的动作列表
 控制VC++.NET中WEB对话框的HTML元素属性
 使用Visual C++.NET的WEB对话框
 初识Visual C++.NET开发环境
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!