设为首页 加入收藏

TOP

17.6.2 拥有窗口和寄宿控件
2013-10-07 01:05:05 来源: 作者: 【 】 浏览:67
Tags:17.6.2 拥有 窗口 寄宿 控件

17.6.2  拥有窗口和寄宿控件

控件可能是拥有窗口的或者是寄宿者。如图 17.12 所示,拥有窗口控件有一个窗口,寄宿者只是使用一个窗口。

在控件的生命周期内,都有一个iWin成员指向某个可绘制的窗口。这个可绘制的窗口可能是标准窗口(RWindow),或者是备份窗口(RBackedUpWindow)。RDrawableWindow是这两者的一个基类。

可以从具体控件类的第二阶段构造函数中调用CCoeControl函数,指明它是拥有窗口控件还是寄宿控件。

用来指定和测试窗口的函数有:

  

从派生的控件或应用程序 UI 类,包括你自己应用程序的应用程序 UI,你可以通过 iCoeEnv来访问 CCoeEnv。如果有一个指向控件或应用程序 UI 的指针,可以使用它的公共函数ControlEnv()。如果这两者都不能访问,可以使用静态函数CCoeEnv::Static(),它使用线程本地存储(TLS)来找出当前环境。如果需要频繁的访问,因为TLS不是特别快,还可以在对象的某个地方存储一个指针用于更快的访问。

控件环境包括以下工具(见图17.11):

  

  

CreateWindowL()函数创建一个新窗口,它可以是标准窗口,也可以是备份窗口。

SetContainerWindow()函数告诉控件使用一个现有的标准窗口或备份窗口。若控件自身是与同一窗口相关联控件的组件,则应该使用这一函数。SetContainerWindowL()告诉控件寄宿到某个现有控件,因此,它最终使用某个现有窗口。

SetContainerWindowL()既是虚函数,也可能发生异常退出。在Symbian操作系统中这不是最佳设计:实际上,它应该两者都不是。确保如果不重写这一函数它就不会异常退出,因此设法将这一函数看成非设计为要被重写的。少数几个Uikon类将它用于通过其他手段也能实现的某些目的。

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.9 与设备和尺寸无关的图形 下一篇17.8.1 无闪烁重绘

评论

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