这是本系列第二篇。本来是准备定WIDGET的,不过后来想想,EVENT还是需要先在WIDGET之前简单讲一下的,毕竟在RTGUI里面,事件是一个比较独立的东西,它派生的基类就是RTGUI EVETN,与widget无关,需要先单独做一个了解,再到后面讲如何搭建自己的widget的时候才会清晰一些。然而我也实在不知道该怎么讲这个,一个是毫无经验,另一个则是不知从何讲起,估计还是会讲的一头雾水吧。
在前面一篇讲到,RTGUI本身的架构是模仿MFC的,从它的运行方式可以看出来。一般用过MFC对话框程序的人都该知道,MFC基本架构是一个APP线程,在这个线程里面管理着各种事件的传递与派发,该app会判断当前最顶层的windows是不是一个modal显示的windows,如果是,那么控制事件(这里指鼠标与键盘控制事件)只会发送给它,而不再给别的windows,而不是的话就会判断控制事件是在哪个窗口,再由窗口判断是属于它上面的哪个控件,然后引用对应处理函数进行处理,而如果是显示事件(重绘、隐藏、显示、移动等事件),则只要直接发给对应窗口对应控件即可。
RTGUI自身也是一个经由各种事件实现各种管理运做来实现功能的架构:一个RTGUI SERVER线程相当于MFC的APP线程;一个RTGUI APP 挂上MAIN WINDOWS,相当于MFC的对话框主窗口;而对话框上子窗口、modal窗口也是与RTGUI里面的窗口一一对应的;同样的,对于对话框上面触摸显示事件的响应,也是适用于RTGUI