C++ Builder中MDI应用程序的设计

MDI(多文档界面)应用程序是指用户可以同时打开多个文档,每一个文档显示在应用程序主窗口客户区的独立窗口中。如字处理程序Word就是一个典型的MDI应用程序,你可以在Word中同时打开和使用多个文档,PowerPoint中你也可以同时创建和打开多个幻灯片应用程序,电子表格中也允许用户同时对多个图表进行编辑。MDI应用程序一般包括三类窗口:

* 框架窗口:框架窗口与应用程序的主窗口类似,有可改变大小的边框、标题栏、系统菜单等。应用程序必须为框架窗口注册一个窗口类。一个MDI应用程序一般只有一个框架窗口,框架窗口控制着其它各类窗口。

* 客户窗口:客户窗口提供对下属MDI子窗口的管理,每一个MDI应用程序有一个客户窗口。

* 子窗口:当用户打开或创建一个文档时,客户窗口便为该文档创建一个子窗口。每个子窗口都有可以改变大小的边框、标题栏、系统菜单、最小最大化按钮等。任何时刻只有一个子窗口是活动的。子窗口不能超出客户窗口的范围。

用一般的开发工具开发MDI应用程序相当麻烦:你必须注册框架窗口和子窗口类、创建框架窗口和客户窗口、写消息循环和回调函数、创建子窗口等等,其中的每一步都不是什么轻而易举之事。但是在Borland C++ Builder(以下简称CB)中实现MDI应用程序却相对简单,你只需设置一下窗体的属性FormStyle即可:把框架窗口的FormStyle设为fsMDIForm,子窗口的FormStyle设为fsMDIChild。另外CB本身也提供了MDI程序模板,选择File|New|Projects|MDI Application,如下图所示:

CB就会产生一个MDI应用程序框架。直接编译运行该程序,就可以看到该程序已经具有一个MDI程序的基本特征了。

我们利用这个模板设计一个MDI应用程序。该程序是一个支持多文本格式和普通文本格式的多文档编辑器,且同时支持工具栏快捷按钮和打印输出。下面我们就来谈一谈其具体开发过程:

时间: 2024-11-08 22:16:13

C++ Builder中MDI应用程序的设计的相关文章

xe10的c++builder中开发ios程序,如何在苹果的模拟器中运行

问题描述 xe10的c++builder中开发ios程序,如何在苹果的模拟器中运行 30C xe10的delphi中可以直接开发程序直接运行在苹果系统的虚拟机里,但是c++builder中却不能在模拟器中运行.不知道如何做,谢谢! 解决方案 http://www.embarcadero.com/products/cbuilder

应用程序框架设计(1):SW系统简介

<应用程序框架设计>是我大学毕业时(2000年)写的毕业论文.在我给公司内部作"应用程序架构"方面的讲座时,曾经作为入门级的参考资料附上.后来不知如何就流传到Internet上,不过是不完整的版本(可尝试在Google中搜索"应用程序框架设计:SW系统").回头看这篇文字,最大的感受觉得自己的文字功底是越来越退步了:-) 由于与界面库有关,大家不妨看看. 应用程序框架设计 许式伟 2000年6月 一.摘要 随着面向对象技术的发展成熟,已经出现了许多著名的

嵌入式程序的设计方式,怎么把exe执行放在窗体程序中作为子程序?

问题描述 嵌入式程序的设计方式,怎么把exe执行放在窗体程序中作为子程序? 怎么设计windows嵌入式程序,怎么把程序嵌套在一起主程序将exe作为子程序在窗体内调用? 解决方案 使用setparent函数设置目标程序作为子程序运行.

C++ builder中如何设计点击按钮后出现下拉选项,并且选项是带图标的。

问题描述 C++ builder中如何设计点击按钮后出现下拉选项,并且选项是带图标的. 需要设计一个带图标的按钮,按钮上显示一个向下的三角,点击向下的三角处 ,可显示下拉列表:下拉列表中显示四个图形按钮,可以选择,选择后更改下拉前的按钮图标. 解决方案 用一个第三方控件,比如http://www.tmssoftware.com/site/advdropdowncontrols.asp![图片说明](http://img.ask.csdn.net/upload/201501/21/14218282

MFC中创建没有子窗口的MDI应用程序

如何创建一个 没有子窗口的多文档应用程序 ..  这里涉及到     CCommandLineInfo  类    下面说说这个类的用处     这个类在 MFC应用程序初始化时候调用  可以通过命令参数 来设置 程序初始状态        在 APP类的初始化函数中有如下代码      CCommandLineInfo cmdInfo;   .   //定义一个 CConnandLineInfo类的对象 ParseCommandLine(cmdInfo);   //  然后传递给 CWinAp

C++Builder中自定义预览窗口

Borland C++ Builder是基于C++语言的可视化编程环境,它提供了可重用组件库和一系列RAD设计工具,使得编程者只需用少量的手工代码就可以创建出高效的Windows应用程序,尤其是复杂的数据库访问应用程序,因此深受软件开发人员的喜爱. 在开发数据库访问应用程序时,会经常涉及到报表的打印问题.C++ Builder中提供了Quick Report(快速报表)组件供编程人员设计报表.Quick Report是挪威的QuSoft AS公司专门为C++ Builder设计的用于制作报表的一

《iOS 9 开发指南》——第6章,第6.4节 Interface Builder中的故事板——Storyboarding

6.4 Interface Builder中的故事板--StoryboardingiOS 9 开发指南图片 23 知识点讲解:光盘:视频知识点第6章Interface Builder中的故事板--Storyboarding.mp4Storyboarding(故事板)是从iOS 5开始新加入的Interface Builder(IB)的功能.其主要功能是在一个窗口中显示整个APP(应用程序)用到的所有或者部分的页面,并且可以定义各页面之间的跳转关系,大大增加了IB便利性. 6.4.1 推出的背景I

C++ Builder中如何保持控件的位置及大小

C++ Builder/Delphi是Inprise(原Borland)公司广受欢迎的可视化C++/Pascal开发工具,利用它可极大地加快应用程序的开发速度.但是,也正因为其是可视化编程工具,将控件拖放到Form后,控件的位置就固定死了.随着Form的大小或屏幕分辨率的改变,控件和Form本身的位置往往变得非常混乱.本文将介绍一些正确定位控件及Form的方法. 利用OnResize事件改变控件位置及大小 C++ Builder/Delphi中的Form控件有一个OnResize事件,Form的

为 ADO 程序员设计的 ADO.NET (2)

ado|程序|程序员|设计 转换现有代码有许多 ASP 页面使用 ADO 对象来抽取数据.让我们来讨论几种典型的情况,您在不久的将来移植和改编代码时可能会遇上这些情形.如果您有从单个记录集生成报表的 ASP 页面,DataReader 对象将是您最好的伙伴.您浏览 DataReader 对象时,它会将结果输出到页面. String strConn, strCmd; strConn = "DATABASE=MyAgenda;SERVER=localhost;UID=sa;PWD=;";