1.事件类型
Symbian OS 中的Window server有三种事件类型,通用事件、重画事件、优先键事件,它们分别封装在TWsEvent、TWsRedrawEvent、TWsPriorityKeyEvent类中。
这三种事件分别通过RWsSession的GetEvent()、GetRedraw()、GetPriorityKey()来获取。
其中通用事件又可以通过TWsEvent的Type()方法来获取事件码以区分不同的事件,如EEventKeyUp、EEventPointerEnter事件等;通过TWsEvent的Pointer()方法来获取指针事件(TPointerEvent),TWsEvent的Key()方法来获取按键事件(TKeyEvent)。
2.处理事件
事件总是伴随着窗体的,如按键事件伴随Window group;指针事件伴随可画窗体(drawable window)。
http://blog.csdn.net/pursuer_zhao/archive/2009/01/24/3852479.aspx
3.RWindow,RWindowGroup,CCoeControl的关系。
window是一块矩形区域,是symbian里用来控制对屏幕的访问的。就是说,除了直接访问屏幕技术(DSA),应用程序是向window而不是向屏幕绘画的。
整个系统的window是以树的结构被管理的,有一个根节点(root window),根节点的子节点是Group windows(RWindowGroup),用于管理同一个应用的多个window. 这两个都是WSERV创建的,它们跟屏幕绘画没有关系。
然后Group windows的子节点就是具体的各个window(RWindow)了,负责屏幕的绘画。
WSERV会遍历这个树形结构,根据各个window在结构中位置,对屏幕进行绘画。
CCoeControl是UI控件的基类,要想把控件显示在屏幕上就需要为它创建(CreateWindowL)或者指定(SetContainerWindowL)绘制的窗口(RWindow)
4.桌面浮动窗口相关的帖子
Drawing to the screen outside application framework
http://wiki.forum.nokia.com/index.php/Drawing_to_the_screen_outside_application_framework
如何实现顶层窗口:
http://www.devdiv.net/viewthread.php?tid=6780&highlight=%B6%A5%B2%E3
How to draw an Icon on the IndicatorPane of Series 60 :
http://iovi.blogbus.com/logs/41637675.html