一种嵌入式图形系统的多窗口管理器技术方案

技术编号:3800605 阅读:315 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种用于嵌入式系统的多窗口管理系统和方法,所述系统包括:消息处理模块执行前端操作,用于处理用户消息并将窗口基本组件区域变化信息以脏区域队列方式输出;画面刷新模块执行后端操作,用于将传递来的脏区域队列解析,将组件最新区域信息输送至屏幕显示缓冲区,完成显示刷新。由于本发明专利技术采用分层的刷新方法和优化的脏区域队列算法,将刷新操作的运算量降到最低,并且支持窗口垃圾收集器,因此本发明专利技术具有较高的效率。又由于采用双缓冲的显示机制,避免了画面刷新时的闪屏问题,因此本发明专利技术具有较好的显示效果。

【技术实现步骤摘要】

本专利技术涉及多窗口管理系统和方法,更具体地说,涉及嵌入式GUI (图形用户界面)的多窗口画面刷新方法和消息处理机制。
技术介绍
具有WINDOWS风格的多窗口显示是一种流行的、受到广大用户欢迎的技术。由于交互性好,越来越多地在生产、生活等各种领域得到广泛应用。现有技术中对于多窗口的管理,常采用类似X Window系统的C/S (客户端/服务器)体系架构,接收客户端发送的请求,响应用户对窗口的操作。窗口管理系统定义了桌面上窗口的外观,并控制着如何操作和放置窗口,例如打开、关闭、移动、调整大小、最小化,等等。还可能处理会话管理功能,比如如何将会话暂停、恢复、重启和结束。窗口管理系统还控制着窗口装饰,也就是窗口的标题栏和边框。除了美学方面的考虑之外,通过改变窗口的装饰还能够改变它们的功能即改变标题栏上按钮的数目和摆放。窗口管理系统也负责管理窗口操作。也就是说,窗口管理系统,控制着X窗口系统环境中窗口的所有方面。采用这种方式对多窗口进行管理,占用系统的资源多,效率低,实时性较差,并且需要操作系统和库的支持。更重要的是,现有技术中对于多窗口的管理并不适合在嵌入式系统中使用,因为现在流行的嵌入式系统在面向具体应用时,比如过程控制,有较强的实时性要求;而嵌入式系统本身资源较少,且不一定包含操作系统及所需的库文件,因此难以支撑现有窗口管理系统的应用与作用的发挥。
技术实现思路
本专利技术要解决的技术问题是提供一种嵌入式GUI系统的多窗口管理系统和方法,其具备一般窗口系统的功能,支持多个子窗口嵌套重叠,界面类似于Windows等经典窗口系统,包含桌面、任务栏、快捷菜单等经典窗口元素,使操作界面更友好。本专利技术所述的一种多窗口管理系统,其可用于嵌入式系统,包括前端操作和后端操作消息处理模块执行前端操作,用于处理用户消息并将窗口基本组件区域变化信息以脏区域队列方式输出;画面刷新模块执行后端操作,用十将传递来的脏区域队列解析,将组件最新区域信息输送至屏幕显示缓冲区,完成显示刷新。本专利技术还提出了一种用于嵌入式系统的多窗口管理方法,其特征在于,包括前端操作和后端操作查询消息队列是否有输入消息,若有,调用消息处理模块处理该消息并将其列入脏区域队列;接着,再查询消息队列是否空,如果不为空,就继续调用消息处理模块处理,直至遍历完消息队列;由画面刷新模块查询脏区域队列,如果脏区域队列不为空,则进行画面刷新;直至脏区域队列为空时,则画面刷新完毕。本专利技术具有与平台无关,不需要任何库的支持的特点,可方便地移植到各种软硬件系统,甚至可用于不含操作系统的平台,因此具有很好的移植性。本专利技术所述多窗口管理系统能够提供打开、关闭、移动、最大化、最小化、缩放和焦点切换等基本窗口操作,及窗口半透明功能(只有后端操作,在画面刷新模块中完成),可以很方便地实现其他复杂窗口功能。如通过定时最小化、最大化切换,可实现窗口闪烁;通过定时移动微小距离,可实现窗口振动;通过定时半透明窗口 (半透明值递增或递减),可实现窗口淡入淡出的效果。若有打印驱动的支持,可以方便地实现窗口打印和屏幕打印操作(打印数据已存储在窗口、屏幕显示缓冲区中)。因此本专利技术具有较好的扩展性。附图说明图1为本专利技术所述多窗口系统的MiMft示意图;图2为本专利技术基本组件的组成示意图;图3为屏幕坐标系、窗口坐标系示意图4为显示缓冲区层次示意图5为按钮按下时脏区域登记示意图6为窗口移动时脏区域登记示意图7为一个简单的窗口模型示例;图S为图7窗口模型示例的结构简化示意图9为一种窗口数据存储示意图IO为本专利技术所述的多窗口系统的结构示意图;图11为脏区域队列优化流程5图12为窗口管理线程执行流程图13为消息处理操作流程图14为画面刷新操作流程图15为窗口刷新操作流程图16为屏幕刷新操作流程图17为窗口显示缓冲区刷新流程图18为屏幕显示缓冲区刷新流程图19为元件显示缓冲区刷新窗口显示缓冲区示意图20为窗口打开前端操作流程图21为窗口关闭甜端操作流程图22为窗口移动前端操作流程图23为窗口焦点切换前端操作流程图。具体实施例方式图1为本专利技术所述多窗口系统的组件示意图。针对本专利技术的多窗口管理系统,可抽象出一些基本组件显存、屏幕、窗口和功能元件,其中有-显存是由系统提供的显示缓冲区,与显示屏上的像素点一一对应,刷新显示缓冲区中的数据,就能改变显示屏上的显示内容,完成画面刷新。屏幕相当于一个在内存中的虛拟显存,并管理着当前所有打开的窗口,是窗口的载体。窗口是一组功能元件的集合,是元件的载体。其由背景、边框、标题栏及功能元件组成。可分为系统窗口 (桌面、任务栏、快捷菜单、信息提示等窗口)和弹出窗口。功能元件包括静态显示(字符、图片等)、按钮、编辑框、滚动条、动画、显示列表以及自定义元件等。通过系统提供的定制接口,其他功能元件可以用基本元件定制实现。如下拉菜单,可以通过按钮和弹出窗口定制,单选框、复选框及进度条则可以通过按钮定制。功能元件可以关联一组数据,关联数据可从服务器端获取,也可从本地得到。通过关联数据,各功能元件之间就能相互通信,以完成各种复杂的逻辑。图2为每个皿的具体组成示意图。其中公共数据包括显示区域、显示缓冲区。显示区域是组件在对应坐标系下的矩形区域。显示缓冲区存储组件当前的显示内容,按层次可分为元件显示缓冲区、窗口显示缓冲区、屏幕显示缓冲区和显存缓冲区。当画面刷新时,显示缓冲区按层次依次被刷新,最终显存缓冲区被刷新,这样就完成一次画面刷新操作。脏区域队列需要刷新的区域由脏区域队列提供。其记录了组件需要刷新的区域,刷新时,只更新显示缓冲区中对应的这些区域,以提高刷新效率。从图2可以看出,屏幕显示缓冲区和显存缓冲区构成双缓冲显示模式,避免了刷新过程中显示屏的闪烁问题。图3给出了屏幕坐标系与窗口坐标系之间关系的示意图,具体地说,元件的显示区域属于窗口坐标系;窗口的显示区域属于屏幕坐标系。屏幕和显存的显示区域一样,都对应显示屏的大小。图4则为显示缓冲区层次示意图。所谓显示缓冲区,是指存储组件在当前的显示内容。按层次可分为元件显示缓冲区、窗口显示缓冲区、屏幕显示缓冲区和显存缓冲区。当画面刷新时,显示缓冲区按层次依次被刷新,最终显存缓冲区被刷新,这样就完成一次画面刷新操作。当组件创建、隐藏、关闭时,或组件的显示内容、显示位置改变时,会将显示区域登记到下一层组件对象的脏区域队列中。结合图4的示意,元件显示区域就会被登记到窗口脏区域队列,窗口显示区域则会被登记到屏幕脏区域队列。如图5所示,假设按钮B所显示的区域为X二Rb,窗口 W的显示区域为Y=Rw,则Fy(x)为返回区域x在区域y所在坐标系下的区域,即R,b = F—Rw (Rb)。如图5所示,当按钮B被按下时,会将按钮区域登记到窗口 W的脏区域队列,并将转化到屏幕S的按钮区域登记到屏幕脏区域队列。如图6所示,假设窗口 W移动前显示区域为Rw,移动后显示区域为R'w,当窗口移动时,会将移动前和移动后的窗口区域都登记到屏幕脏区域队列。图7是一个简单窗口模型示意图,屏幕S上打开了窗口 Wl、 W2、 W3、 Wll、 W12、W13和W121,其中,Wl桌面,W2任务栏,W3快捷菜单是系统窗口, Wll、 W12、W13是Wl的弹出子窗口, W121是W12的弹出子窗口。图本文档来自技高网...

【技术保护点】
一种用于嵌入式系统的多窗口管理系统,其特征在于: 消息处理模块执行前端操作,用于处理用户消息并将窗口基本组件区域变化信息以脏区域队列方式输出; 画面刷新模块执行后端操作,用于将传递来的脏区域队列解析,将组件最新区域信息输送至屏幕显示缓冲区,完成显示刷新。

【技术特征摘要】

【专利技术属性】
技术研发人员:董鹏云马学童池家武
申请(专利权)人:深圳市步科电气有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1