2.窗口组
RWindowGroup 类的主要角色是焦点处理和按键处理。窗口组负责处理焦点,这是因为它们是z次序中的顶层节点。唯一可以合理接受焦点的窗口组是前台组。
与焦点相关的函数能够使窗口组不能接受焦点,也能够让当触笔事件发生时自动接受焦点(并进入前台)。窗口服务器支持闪烁文本光标,它的窗口、位置、形状等都可以通过窗口组来控制。显然,这是完成此任务的适当位置,因为光标与焦点关联。
含义之一是,每个应用程序只能有一个文本光标。像UIQ的日程等应用程序,当详细视图获得焦点时,在其中显示闪烁光标。但是,当显示对话框时,视图失去焦点,则必须终止光标的闪烁。在S60日历中添加一个会议,菜单被提到前端时会发生同样的情况。而且,视图应当放弃对它的控制,使之可以用于编辑对话框中可能出现的文本域。
RWindowGroup 还能够配置持续一段时间按下键时,生成键事件的方式。例如,在一些手机的小键盘上,持续按下字母数字键而不立即释放,能导致生成的按键事件在数字与字母之间切换,也可能从当前前台的应用程序中发送到不同的应用程序中去。
默认行为针对按下键时发生的标准键事件;持续按下键一段短暂的时间后(通常是几分之一秒),将自动重复。可以使用RWindowGroup的CaptureLongKey()函数来改写此行为。可以自定义某些行为。首先,当用户按下键,但在要求的时间之前释放它,那么按下键或释放时,可能发生标准键事件;其次,如果键被长时间按下,那么从已捕获的事件也可能生成不同的按键事件,这可能或者不会自动重复。事件还可以从具有焦点的窗口发送到不同的窗口组。比如,如果按键事件从数字变为字母,可能希望将它发送到地址簿,而不是作为手机号码显示。
【责任编辑:
董书 TEL:(010)68476606】