设为首页 加入收藏

TOP

17.5.3 复合控件
2013-10-07 01:05:18 来源: 作者: 【 】 浏览:73
Tags:17.5.3 复合 控件

17.5.3  复合控件

布局寄宿控件,比如在连三子应用程序视图中,需要使用某种结构。如第15章提到的,使用复合控件(compound control)实现这种规范,其定义为如果在自身之外还有一个或多个组件控件,这个控件就是复合的。

组件控件完全包含在拥有它的控件区域内。

控件的所有组件控件必须拥有非重叠矩形。

组件控件不一定是寄宿控件,它可以拥有窗口。然而在大多数情形下,组件控件是寄宿控件。

为了向CONE框架指出组件控件的拥有权关系,复合控件必须实现来自CCoeControl的两个虚函数: 

CountComponentControls()指出控件有多少个组件。默认值为0,但可以重写它; 

ComponentControl()返回第 n 个组件,n 从 0 到组件个数减 1。默认状态下,这一函数抛出严重错误(因为如果没有组件,它就根本不会得到调用)。如果改写了Count Component Controls(),也应该改写这一函数,以对每一可能的n值返回一个组件。

如果控件包含了固定数目的组件,一个便利的Symbian操作系统的惯用法是为它们的控件提供枚举,比如:

  

CountComponentControls()函数简单返回EAmountOfControls,它的好处是添加或删除控件后,不会忘记改变返回值。

   

如果控件包含可变数目的控件,必须动态地评估返回值。如果控件包含固定数目的组件,ComponentControl()的简单实现可以是一个 switch 语句,每个 case 硬性编码为对应组件控件的地址,如下面代码所示。

   

对话框也是典型的带有单一窗口的复合控件,但对话框的组件控件的数目是不可预测的,在这种情况下,取代上面 CountComponentControls()和 ComponentControl()的硬性编码,CEikDialog使用可变长度数组来存储对话框行,并动态地计算出这些函数的返回值。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.4.2 DrawNow()模式 下一篇17.5.1 CONE

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: