设为首页 加入收藏

TOP

17.5.2 拥有窗口和寄宿控件(1)
2013-10-07 01:03:30 来源: 作者: 【 】 浏览:59
Tags:17.5.2 拥有 窗口 寄宿 控件

17.5.2  拥有窗口和寄宿控件

如在第15章指出的,有两种类型的控件:

要求整个窗口的控件被称为拥有窗口控件(window- owning control);

另一方面,只要求部分窗口的控件被称为寄宿控件(lodger control),或冗长地被称为非拥有窗口控件。

图17.9所示的屏幕,只有一个窗口,但有多个控件。

带有弹出列表框的标题;

带标题的文字框控件;

带有两个按钮的按钮数组。 虽然窗口可以有许多控件,但控件只能有一个窗口。每个控件,不管它是拥有窗口控件还是寄宿控件,最终只在一个窗口中占据某个矩形,而控件向该窗口上的这个矩形进行绘制。控件的窗口通过CCoeControl 中的Window()函数提供。使用寄宿控件有一定的优势。

  

寄宿控件极大地减少了应用程序与窗口服务器之间的客户端-服务器传输。只需要一条客户端—服务器消息,就可以创建一个完整的对话框,因为它只包含一个窗口。只需要一个事件来重绘整个对话框,不管它有多少个控件受到影响。在应用程序使用中经常创建和销毁对话框,因此这些优化产生意义重大的影响。

寄宿控件减少与复杂实体,比如对话框,相关的系统开销,因为控件在内存中要比在窗口中紧凑得多。

寄宿控件要求的处理需求更少。窗口可能会移动、改变 z 次序和任意重叠。同一窗口上对等级别的寄宿控件从不相交,而且它们只占据拥有它们的窗口或控件的一个子区域。这使得检测相交的逻辑要比检测由窗口服务器管理的任意复杂区域所要求的逻辑容易得多。

与没有寄宿控件的情形相比,所有这些因素提高了Symbian操作系统的系统效率。为了利用这些特性,大多数控件应该被编写成寄宿控件,但有少数几种情形需要窗口:

当没有窗口供寄宿时,比如应用程序视图;

当需要备份窗口时,稍后将回过头来讲解该内容;

当需要以任意方式重叠对等控件时,这不符合寄宿控件的更严格的嵌套规则;

当需要后台备份属性时,该属性被对话框和菜单窗格用来保存位于它们后面的窗口的位图。 拥有窗口是控件的一个相当基本的属性。编写一个控件既是寄宿控件又是拥有窗口控件没有太多意义。决定它应该是哪一种控件,然后遵循它。只有小部分控件代码受到这个决定的影响。因此,如果在后来发现先前是独立应用程序视图的控件有窗口可以寄宿,那么应该能够相当容易地修改控件。  

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.5.2 拥有窗口和寄宿控件(2) 下一篇C#构造函数与C++的区别浅析

评论

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