GUI软件框架--窗口服务器
2023-09-11 14:18:43 时间
GUI软件框架
图4显示了本GUI设计的软件层次,引入分层会带来很多好处:[3]
降低复杂度每一层只专注自己需要实现的功能,实现高内聚;
提高可移植性不管更换处理器还是LCD只需要修改底层部分;
改善性能使用高效算法来优化性能只需要修改一处。
图4 GUI软件层次
对于轻量级嵌入式GUI来说,窗口是十分重要的图形载体,嵌入式GUI一般一个屏幕仅容纳一个窗口,当前正在显示的窗口即为活跃窗口,其它均为睡眠窗口。因此窗口有2种状态:
活跃期:处理消息,响应动作,如获取实时数据并刷新屏幕等;
睡眠期:不响应外部消息,释放资源,如硬件和软件实体等;
从逻辑上把窗口系统分成2层:窗口服务器和客户端,如图5所示。外部消息(用户按键、数据更新等)首先传递给窗口服务器,然后服务器把消息传发给当前活跃窗口,活跃窗口根据消息类别进行相应处理;另外,活跃窗口也可以向服务器发出请求,如切换窗口等。
图5窗口服务器与客户端
在GUI设计中消息是各种对象通信的重要机制,窗口之间通信的种类繁多,如果对消息进行编码呢?图6显示了一种参考方式。消息本质上就是一个32位整数,其实很多RTOS消息传递也是这个类型。取低8位为事件编码,高24位为类型编码。[4]
任一类型最大支持256个事件,类型编码仅能一位为1,否则将引起事件判断错误。当编码正确时,类型一定是2的整幂次,因此可以使用检查整幂次方的算法来检测消息正确性。
http://www.21ic.com/embed/hardware/development/201804/51678.html
相关文章
- JAVA-JSP内置对象之application对象获得服务器版本
- 【华为云技术分享】如何快速实现鲲鹏弹性云服务器Node.js部署和高可用性?
- HTML页面本地正常,部署到服务器稍微异常解决方案
- Mongoose源码剖析:外篇之web服务器
- C#客户端Redis服务器的分布式缓存
- Nginx搭建flv视频点播服务器
- Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
- EasyDSS RTMP流媒体服务器videojs flash播放RTMP/HLS提示错误的解决方案
- Apache服务器虚拟主机(vhost)常见配置
- SAP附件UI里选择的文件是如何传到ABAP服务器的
- 【云原生之Docker实战】使用Docker部署Piwigo图片管理服务器
- 嵌入式linux开发,Ubuntu18.04 下搭建 NFS 服务器
- python里使用socket创建UDP时间服务器
- 服务器一些软件
- 阿里云 防止网站敏感信息(个人的如身份证号手机号、服务器的如版本信息、他人的信息如越权查看)泄漏——通过规则匹配做 避免身份证、银行卡、电话号码等敏感数据泄露;针对服务器返回的异常页面或关键字做信息保护。
- Go Web---Web服务器
- mac自带的本地apahce服务器(iPhone访问Mac的本地服务器)
- Mac 通过 ssh 远程登录服务器(密钥对(证书)方式)
- 【已解决】Linux服务器安装JDK
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
- [SQL] SQL Server获取数据库服务器当前时间
- C++ UDP客户端服务器Socket编程