gaoshan 发表于 2010-9-15 15:56:51

rtgui 如何处理事件和按键响应

小弟正在学习用RTGUI,对事件很迷惑,例如:view中的控件如何捕获按键或触摸事件,假如有两个view,每个view都有一button,button都要对按键处理,当按键发生时,两个view是不是都获得这个事件且都响应?还是只发给当前view的button,还是当前view的button获得焦点之才会捕获这个事件。
哪位大侠知道能讲解一下吗?

ffxz 发表于 2010-9-15 20:24:41

按键事件:
由按键线程捕获或中断触发,发送给GUI服务线程,服务线程根据当前焦点是window还是panel做相应的事件发送,

GUI客户端线程收到事件后,寻找当前获得焦点的控件,采用这个焦点控件的event_handler进行处理。

鼠标事件(通常把触摸屏模拟成鼠标事件):
触摸屏中断触发,发送给GUI服务线程(包括x,y位置信息),服务线程依据x, y的位置判断是属于window还是panel(此时,window优先),做相应的事件发送,

GUI客户端线程收到事件后,根据x, y的位置查找属于哪个控件区域(从控件树的根开始一次查找,直到找到叶子),交给叶子控件的event handler进行处理。

gaoshan 发表于 2010-9-16 08:25:39

ffxz 大侠,能发个例子来看看,谢谢

gwb721123 发表于 2010-10-9 15:33:43

网上可下载代码的

niba 发表于 2010-10-18 18:06:53

开线程都是用了OS吧,如果只运行GUI,那怎么处理呢?

lugang_2920213 发表于 2010-11-5 13:25:15

回复【4楼】niba
开线程都是用了os吧,如果只运行gui,那怎么处理呢?
-----------------------------------------------------------------------

RTGUI只支持RTT

40130064 发表于 2011-1-10 12:34:10

不用OS,只运行GUI,需要做很多修改,因为没有了OS的信号量功能,需要将sever.c下和用户的代码都放入main()的主循环中,用event作为状态机的量,用按键触摸屏的事件更改状态机进入相应的事件处理过程.不过这样做效率肯定不高,不能做到实时性的事件相应
页: [1]
查看完整版本: rtgui 如何处理事件和按键响应