单文档窗口分割视图和普通视图的切换
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态切分可以让使用者通过拖曳分裂方块的使用 ! 将窗口切分 ’ 但是 ! 动态切分最多只 可 以 将 窗 口 分 裂 为 ! "! 个 子 视 窗 ! 不 能 进 行 混 合分裂视窗 ! 所 有 子 窗 口 的 属 性 和 父 窗 口 都 是 一 样 的 ! 而 且 子 窗 口 的 数据通常来源于同一处 ’ 另一种是静态切分 ! 用到函数 &02-;2*;-;.7UV ! 函数声明如下 )
IJJK &02-;2%.28 G./; 068M ./; 76<M &0:/;.12&<-OOL 5%.28&<-OOM *,PC O.Q2,/.;M &&02-;2&6/;2N;L 5&6/;2N;VT
功能描述 ) 为静态切分的窗口的网格填充视图 ’ 在将视图于切分 窗口联系在一起的时候必 须先将切分窗口创建好 ’ 参 数 含 义 )068M 76< 将 新 视 图 与 指 定 切 分 窗 口 所 在 的 行 和 列 的 窗 格联系起来 5%.28&<-OO 指定新视图的 &D:/;.12&<-OO 类 O.Q2,/.; 指定新视图开始的大小 5&6/;2N; 创建视图的上下文构造指针
IJJK &02-;2 G&@/FL 5A-02/;@/FM ./; /(-ND68OM ./; /(-N&6<OM *,PC O.Q2(./M &&02-;2&6/;2N;L 5&6/;2N;M +@JD+ F8*;R<2M S,BE /,+HT
功能描述 ) 该函数用来创建动态切分窗口 ’ 参数含义 )5A-02/;@/F 指向父窗口的指针 ’ /(-ND68OM /(-N&6<O 分割窗口的最大行数和列数 ’ O.Q2(./ 子窗口的最小尺寸 ’ 5&6/;2N; 创建分割窗口的上下文 ’ F8*;R<2 分割视图的属性 ’ /,+ 子窗口的 ,+ 号 ’
!"# $%& ’()*+ ,*-. /01 0234/) ,*#. ’.*+5" 67’+3/8+9 E^.O 5-520 ./;06F:72 506=0-11./= - 1:<;.ab.28 ./;20c-72 ./7<:F./= O5<.; b.28O -/F /601-< b.28O 9-O2F 6/ ;^2 *+, 9R %.O:-< &’’ X\"\ ,; -<O6 =.b2O - 8-R 6c O8.;7^./= b.28O\ E^.O 12;^6F 02-<.Q2O ./ - *+, c0-12 ./7<:F./= O5<.; b.28O -/F /601-< b.28OM ;^2 O8.;7^ .O 2-OR -/F 76/b2/.2/;M O-;.Oc.2O ;^2 02d:2O; 6c F.O5<-R./= F-;- :O./= ;^2 O5<.; b.28 -/F /601-< b.28 -; ;^2 O-12 ;.12 ./ - 506=0-1\ 4/F ;^2/ :O2O -/ 2N-15<2 ;6 2N5<-./ ;^2 506=0-11./= 50672OO\ :-; .23<’ )*+,T O5<.; b.28T /601-< b.28T ;^2 b.28 7<-OOT O8.;7^
"! 原理概述
在建立一 个 基 于 单 文 档 的 工 程 之 后 ! 它 会 自 动 创 建 五 个 类 ! 一 个 主框架窗口类 #&(-./)0-12 $3 一个 以 %&! 工 程 名 !455 & 为 名 字 的 类 ! 它 是 主 要 应 用 程 序 类 ’ 一 个 以 (& ! 工 程 名 !+67 & 为 名 字 的 类 ! 它 是 文 档 类 ’ 一 个 以 (& ! 工 程 名 !%.28 & 为 名 字 的 类 ! 它 是 视 图 类 ’ 还 有 一 个 &496:;+<= 类 ! 它是帮助对话框 ’ 单文档界面只有一个文档类 ! 但可以 有多个视图类 ’ 在默认建立的工程中只有一个视图类 ! 因此视图是单 一的视图 ’ 为了要实现多视图 ! 我们就需要在工程中添加新的基于不 同基类的视图类 ! 每个和文档类关联的视图都有一个 76/;06< ,+ ! 这 个 ,+ 是 一 个 整 数 ’ 如 果 只 显 示 一 个 视 图 类 ! 这 个 类 的 76/;06< ,+ 是 4)>?,+@?A4BC?),D*E! 在多视图切换函数 中 切 换 的 时 候 只 要 把 要 显示的视图的 76/;06< ,+ 设置为 4)>?,+@?A4BC?),D*E ! 然后隐藏其 他视图就可以实现窗口的切换 ! 实现还是比较方便的 ’ 切分窗口 的 实 现 要 复 杂 一 点 ! 单 文 档 只 有 一 个 主 框 架 类 ! 如 果 要 分割窗口 ! 就要切 分 主 框 架 ! 使 用 一 般 的 动 态 切 分 和 静 态 切 分 切 分 完 后 ! 主框架窗口就被分割了 ! 显示的时候就只能显示分割窗口 ! 与普通 窗口的切换变得很复杂 ! 并且容易出错 ’ 我们提出一种新的方法 ! 在类 中添加一个新的框架 ! 分割这个框架 ! 然后把它作为一个视图 ! 参与视 图切换 ! 这样就使得分割视图和普通视图的切换变得容易和方便 ’ 窗 口 分 割 我 们 就 要 用 到 &*5<.;;20@/F 类 !&*5<.;;20@/F 像 是 一 种 特殊的框架窗口 ! 每个窗口都被相同的或者不同的视图所填充 ’ 当窗 口被切分后用户还可以使用鼠标移动切分条来调整窗口的相对尺寸 ’ &*5<.;;20@/F 有两种不同的切割窗口的方式 ’ 一是动态切分 ! 用到函数 &02-;2GH ! 函数声明如下 )
IJJK &02-;2*;-;.7 G&@/FL 5A-02/;@/FM./; /D68OM./; /&6<OM +@JD+ F8*;R<2MS,BE /,+V
功能描述 ) 用来创建切分窗口 ’ 参数含义 )5A-02/;@/F 切分窗口的父框架窗口 ’ /D68OM /&6<O 窗口切分的列数和行数 ’ F8*;R<2 窗口的样式 ’ /,+ 子窗口的 ,+ 号 ’ 静态切分 ! 使用者除了可以调整子窗口的大小和进行混合分裂窗 口外 ! 最多可将窗 口 分 裂 为 WX "WX 个 子 窗 口 ! 每 个 子 视 窗 可 以 有 各 自 不同的视图类 ! 各个子视窗显示的数据可以来自于不同的数据源 ’ 窗口分割完后要用视图填充窗口 ! 这 要 用 到 函 数 &02-;2%.28 *$! 函数声明如下 )
#! 具体的步骤 ’
GWV 在 主 程 序 中 添 加 一 个 框 架 类 ! 在 视 窗 框 架 类 中 定 义 &*5<.;;20@/F 类的指针 ! 来调用 &*5<.;;20@/F 类 ’ 然后再添加其余的所
需要的视图 ’ G!V 重 载 视 窗 框 架 类 中 的 J/&02-;2&<.2/;GV 函 数 ! 单 文 档 程 序 中 是 *&)0-12@/FYYJ/&02-;2&<.2/; $! 分割新添加的框架类 ! 建立静态分裂子 视窗 ! 为静态分裂子视窗填充视图 ’ GZV 编写切换函数 ! 建立维持各子视窗同步更新的机制 ’ G[V 编程实例 ’ 在这个实例中 ! 有一个框架类 ! 还有两个视图类 ! 通过点击菜单栏 中的菜单项 ! 在他们之间进行切换 ! 具体的步骤如下 ) W\ 首 先 应 用 ()& 455@.Q-0F G2N2V 新 建 一 个 基 于 单 文 档 的 名 为 ]-/O^. 的工程 ! 选项都使用默认即可 ’ !\ 在工程中新建 一 个 框 架 类 !&*5<.;;2F)0-12 派 生 自 &)0-12@/F! 这个类的构造函数默认是 506;27;2F ! 为了能够调用 ! 要改成 5:9<.7 ’ 在 头文件 *5<.;;2F)0-12\^ 中修改如下 !
7<-OO &*5<.;;2F)0-12 Y 5:9<.7 &)0-12@/F _ +C&K4DC?+]B&DC4ECU&*5<.;;2F)0-12V
!"
科技信息
! 计算机与信息技术 !
SCIENCE & TECHNOLOGY INFORMATION
wenku.baidu.com
!""# 年
第 !$ 期
%&’()*+ ,-%()../01234/567 8)2.&3( 9,-%()../01234/:;7 %2<./*./0+ =>,?@A>BC>--@D>BC@E:; F7 GH 建立新的视图类 ! 在 工 程 中 新 建 一 个 ,I)/JK 派 生 自 ,I)/J 类 " 在 头 文 件 I)/JKHL 中 将 构 造 函 数 由 %2<./*./0 改 为 %&’()* ! 然 后 在 ,I)/JK 的 MN=23J 5,=,O %=,; 函数中添加如下语句 # 8<)0 ,I)/JK++MN=23J5,=,O %=,; P ,=<*&4/N.O %=<* Q D/.=<*&4/N.5;7 %=,RST/U.M&.5$"V$"V $ 这里用来显示文字 $;7 F 接着新建一个 ,1I)/JK 派 生 自 ,1<24I)/J 类 " 建 立 方 法 是 先 点 击菜单栏的 %WNX/2. & 点击 %A/X<&2*/ & 在弹出的对话框中选择 %=)3(<Y &RS %W==B1MACIW>Z &" 点击 %[/J &V 就 插 入 了 一 个 新 的 对 话 框 " 在 对 话 框
中拖入一个静态 文 本 控 件 " 属 性 标 题 改 为 % 这 里 使 用 控 件 &" 然 后 在 属 性里面选择 % 扩展样式 & 选择 % 静态边缘 &’ 完成后点击 (8)/J & 菜单中的 (,(3XXZ)\320 & 弹出一个对话框询问是否新建一个类 " 选择新建一个 类 " 然后写上类名和基类就新建了一个 ,1<24I)/J 类 ’ 同样在头文件 1I)/JKHL 中把构造函数由 %2<./*./0 改为 %&’()*’ 上面两个新建的类用来和 ,-%()../01234/ 类进行切换 " 下面的类 用 来 填 充 在 ,-%()../01234/ 类 中 切 分 出 的 子 窗 口 " 新 建 一 个 ,TI)/J 类 " 派 生 自 ,T2//I)/J " 并 且 在 头 文 件 -.0@]UHL 中 加 入 ^)N*(&0/ _ 3]U*8)/JHLS " 修改头文件 TI)/JHL " 把构造函数由 %2<./*./0 改为 %&’()* ’ 然后新建一 个 ,?I)/J 类 派 生 自 ,()X.I)/J " 修 改 头 文 件 ?I)/JHL " 把 构 造函数由 %2<./*./0 改为 %&’()* ’
科技信息
! 计算机与信息技术 !
SCIENCE & TECHNOLOGY INFORMATION
!""# 年
第 !$ 期
单文档窗口分割视图和普通视图的切换
$!! 上海理工大学机械工程学院
赵田雨 ! 王崇宇 " 中国 上海 "%%&# +"! 即墨市技工学校 山东 青岛
"’’"%%(
摘要 ) 本文介绍了利用 %,*S4K &‘’X\" 编制含有分割视图和普通视图的基于单文档的多视图界面 ! 以及视图之间的视图切换的方法 ’ 实 现了在一个单文档框架中包含分割视图和普通视图 ! 视图切换方便简单 ! 满足了在一个程序中同时用分割视图和普通视图来显示数据 ! 并用一 个实例来详细说明编制的过程 ’ 关键词 ) 单文档 + 分割视图 + 普通视图 + 视图类 + 切换
!! 引言
在编制的应用程序中 ! 用户界面是用户和系统之间最直接的交互 部分 ! 我们利用 %&’’ 来编制应用程序的可视化界面的时候 ! 通常用的 ()& 框架 ! 即基于文档视图的应用程序 " 它 提 供 了 ! 种 文 档 视 图 结 构 ! 一种是 *+, 结构 ! 即单文档视图结构 ! 二是 (+, 结构 ! 即 多 文 档 多 视图结构 " 但是应用 ()& 创建的框架都只有单一类的视图和功能 ! 在 实际应用过程中 ! 它 不 能 满 足 用 户 的 需 要 ! 有 时 需 要 用 户 在 不 同 的 视 图中进行操作 ! 在同一个程序中包含多个视图也是经常遇到的 " 在我 们做的一个项目中 ! 用 到 了 多 视 图 的 情 况 ! 包 含 分 割 视 图 和 多 个 基 于 不同视图类的普通视图 ! 在这里就介绍一下我们在面对这种情况的时 候所用的方法 " 用这种方法实现在一个单文档多视图结构中包含分割 视图 ! 普通视图的操作界面 ! 以及视图之间的切换 "