设为首页 加入收藏

TOP

18.6.2 窗口类型(2)
2013-10-07 01:07:19 来源: 作者: 【 】 浏览:76
Tags:18.6.2 窗口 类型

1.标准窗口

标准窗口具有从 RWindowTreeNode 的关系链上继承下来的功能。不过,重要的功能是从RWindowBase开始,它是所有可显示窗口的基类。RWindowBase包括:

Activate()函数;

位置和大小设置函数;

触笔控制函数;

阴影控制函数;

后台备份窗口函数。

可以使用Activate()函数作为三阶段构造的最后一步。

(1)利用RWsSession对象,使用构造函数创建一个RWindow对象。它只是一个空的客户端句柄。

(2)利用RWindow中已有的RWsSession对象,使用Construct()连接窗口服务器。

(3)设置所有窗口参数后,使用 Activate()显示窗口,并让它接收事件。对于 RWindow,激活它后,整个窗口立即无效,因此将得到一个重绘事件(除非立即重绘它)。如果使用重绘存储,可以在激活之前绘制它,窗口服务器将在其可见之后就绘制它。

这些函数只能与在屏幕上具有可见区域的窗口关联,这就是为什么与RWindowBase一同介绍的原因。RWindowBase是空白窗口的基类,也是RDrawableWindows的基类。如果绘制窗口,则也可以滚动它的内容,因此这里将介绍滚动函数。 前面已经介绍了RWindow中最重要的函数:Invalidate()、BeginRedraw()和EndRedraw()。不过,还有其他一些重要函数。

Construct()要求给服务器传递一个RWindowTreeNode,作为窗口的父窗口和32位的句柄。父窗口可能是另一个可显示窗口或窗口;所有与该窗口关联的事件均包含这个句柄;控件环境传递拥有该窗口的控件的地址;当控件环境产生一个事件,它简单地将句柄转换成地址,达到与正确控件相关联的目的。

与RWindowBase提供的函数版本相比,还有更易使用的SetSize()和SetExtent()变体。

SetBackgroundColor()的两个变体。

GetInvalidRegion()让你可以获得精确的无效区域。

唯一的用户无需指定父窗口的窗口类型是窗口组。所有来自应用程序的窗口组位于窗口树的同一层。窗口服务器在一个链接的列表中保存它们,这个列表赋予了它们次序,即 z次序。排序是动态的—当应用程序移动到前台或者后台时,次序就改变了。对于每一个应用程序,它的窗口组作为它的顶层窗口使用。

过去,使用无效区域高度优化应用程序的绘图代码是可能的,因此它只会绘制包含错误内容的精确的像素集合。如果窗口使用重绘存储,这样的优化工作就抵消了重绘存储提供的好处。因此,从Symbian OS v8开始,最好不要这么做。

在 Symbian 操作系统中,使用淡出(fading)来更改窗口的颜色,以突出其他窗口。通过重新把颜色值映射为新的有限的范围来实现,可以让它们更亮或更暗。例如,在UIQ中,显示某个对话框时,之前位于前台的窗口发生重绘,淡出并变灰;在S60中,重绘的窗口要亮一些。

在UIQ中,默认淡出值为:对于黑色为0,对于白色为190(未淡出窗口的值范围为0~255)。不过,通过窗口本身可以覆盖这些默认值(所用的函数在 RWindowTreeNode中定义),或者通过它的图形上下文来绘制它。

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇18.6.2 窗口类型(3) 下一篇18.6.2 窗口类型(1)

评论

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