一种嵌入式图形用户界面系统的设计与实现_第1页
一种嵌入式图形用户界面系统的设计与实现_第2页
一种嵌入式图形用户界面系统的设计与实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【Word版本下载可任意编辑】 一种嵌入式图形用户界面系统的设计与实现 没有消息队列的子窗口或控件处理消息的流程如图6 所示。 图6 没有消息队列的窗口的消息处理流程 主窗口调用事件系统中的Post_Msg 或Send_Msg 函数向子窗口或控件发送消息,由于该窗口没有自己的消息队列,事件系统不会将该消息保存,而是直接调用该窗口的消息处理函数找到具体的事件处理方式完成这次窗口操作。这种消息传递方式中,发送消息和处理消息都在主窗口的线程中完成,向一个窗口发送消息相当于要求该窗口立刻对事件开展处理。 SKY-GUI 只设置了一个主窗口,即桌面。其他所有的窗口或对话框都作为桌面的子窗口而存在。 这样

2、系统中只有一个窗口线程和一个消息队列,种消息处理方式只存在于输入抽象层和桌面之间,而窗口之间的消息处理都采用第二种方式,这样系统的线程开销和消息循环开销会大大减少,从而提高其运行效率。 2. 4. 3 窗口之间的消息传递 窗口之间的消息传递根据消息类型的不同有两种不同方式。 主窗口从消息队列中取得的消息在SKY-GUI中称为底层消息。这类消息是由主窗口处理,还是交给子窗口或是控件处理,是根据窗口定义中的pFocus 变量而定的。当一个窗口的pFocus 不为空时,表示该窗口上方有子窗口被用户使用,消息应该交给它指向的子窗口处理,而这个子窗口也检查自己的pFocus 变量, 依此类推; 只有当一

3、个窗口的pFocus 为空,表示该窗口位于屏幕的上方,得到的底层消息由窗口自身处理(如图7 左边流程)。 而当控件的状态变化产生控件消息时,其消息处理的过程正好跟上面的流程相反。控件产生的消息首先由自己处理,有必要时再送给pParent 指针指向的父窗口处理,而后还有必要的话再送给父窗口的父窗口处理,也可以由主窗口送入消息队列(如图7 右边流程)。 图7 从消息队列读出的消息处理流程(左)和控件产生的消息处理流程(右)。 pFocus 变量和pParent 变量加上这样树形的窗口系统实质上是实现了很多GUI 系统中的窗口的Z序(窗口的上下顺序) 功能。该功能是建立在子窗口显示在其父窗口之上,且

4、控件显示在其所属窗口之上的思想上的。由于底层消息一般代表用户对输入设备的操作,所以应该送给位于屏幕上方的用户正在使用的窗口处理,而控件消息一般代表着GUI 界面自上而下的图形和数据变化过程,所以应该从上到下逐层处理。 3 实验和测试 SKY-GUI 现已嵌入已有的视频监控系统项目中予以使用,它有下拉菜单、输入框、密码框、按钮、软键盘等十几种控件,提供视频监控的操控界面和配置界面。其中的一个典型的界面如图8 所示。 图8 SKY-GUI 在视频监控系统中的典型界面。 为了测试其的性能,本文利用SKY-GUI 和开源的Qt 界面库分别为视频监控系统制作了一套用户界面,其参数比照如下表1 所示。 表1 SKY-GUI 与Qt 在视频监控系统中的性能比较。 很显然,Qt 在嵌入式监控系统中占用资源过多,导致其运行速度缓慢并影响到系统的正常编解码。 而SKY-GUI 加上其所需的开源图片和字体库大小也不超过1 M,运行时只占用4 M 左右的内存,这在典型的嵌入式Linux 系统中完全可以承受,也不会影响到监控系统本身的性能。可以看出,Qt 要运用在该监控系统中还需开展更深层次的剪裁和性能优化,而SKY-GUI 则可满足其对界面的功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论