在之前文章中,讲述了一个低内存使用量的的窗口切换机制。有人会问,低内存使用量是多低呢,我这里举个例子。我有一个项目中使用到本切换机制,128*64的单色屏,初步计算有105个窗口(后面还会增加),总内存使用量(包括任务栈)=105*3*4(窗口树) + 1024(公共buff) + 512(任务栈) + 1024*3(uCGUI动态内存) = 6k左右。从这个数字可以看出内存算是使用比较少的了。毕竟有100多个窗口,我在设计时也就只做了10多个窗口,这100多个窗口就是由10多个窗口大量复用组合得到的。

当然本切换机制只是给读者提供一个灵感,不一定就按笔者的框架来做项目,可以只使用这种思想打造更优秀的架构。毕竟项目千差万别,本架构更适合使用按键来切换窗口的用户,低内存的用户,窗口深度级深及多的用户。

在前一篇文章中有读者留言,问了很多问题,之前的窗口确实有很多不完善的地方。这里我直把以前的工程进行升级,主要完善原工程中缺失部分。更新内容主要如下:

1,增加高级窗口(突发事件窗口)切换代码。

2,增加多语言支持接口。

3,接口变更,去除之前繁琐的外部调用接口。

这里还要讲点本机制的特点,本切换机制只进行在一个任务中,也就类似一个大while(1)循环,这样的操作有他特有的优点,第1可以共有一个大公共buff而不用担心内存互斥问题。这时一定会有朋友会问,外部任务调用时如何操作呢?这里我把供外部调用的接口统称为“外部调用接口”。“外部调用接口”我之前的处理方式是,外部任务调用gui内部函数时,把gui内部的函数指针及参数部分同时存入队列中,直到gui运行到读队列时,运行这些函数。这样就可以很好解决互斥问题。后来我发现,这种方式过于繁琐,以至于有大量的函数需要进行注册。现在做了一定修改,只把要传递的参数保存在中间变量中,gui运行时查询是否有参数变更,如果有运行变更部分的代码。这样大大简化了程序复杂度,也更容易理解。

有人可能会担心这窗口机制的移植性问题。这里我要说下,本窗口我在vc,linux,ucos-ii,ucgui-iii等平台都进行过使用,表现都非常良好,做到了一套代码多平台使用。

中文显示,我只做了简单演示,只把三个窗口使用了中文。

   工程链接:

    http://pan.baidu.com/s/1hqoZgAo

最新文章

  1. jquery基础知识学习笔记
  2. Newtonsoft.Json 的序列化与反序列化
  3. python设计模式1:导言
  4. eclipse工程加入jquery.min.js报错:missing semicolon
  5. PHP上传大文件 分割文件上传
  6. C++中,指针数组和数组指针
  7. VS "15" 预览 5 中 VB 15 新增的功能
  8. MVC2 Area实现网站多级目录
  9. notepad++代码折叠对应的树形结构快捷键
  10. IOS应用开发版本控制工具之Versions使用
  11. Android自定义radiobutton(文字靠左,选框靠右)
  12. PHP函数:PHP_SELF
  13. Python 摘录LinkedIn用户联系人
  14. Socket在手机上的应用
  15. linux设置代理修改接口数据
  16. 腾讯云下的CentOS7 配置 FTP 服务器
  17. blfs(systemd版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具
  18. JavaMail发送和接收邮件API(详解)
  19. C#连接SQL数据库代码
  20. hdu 2874 Connections between cities(st&rmq LCA)

热门文章

  1. oracle字符串处理函数
  2. mysql 随机取数据
  3. angular中使用daterangepicker完全能用版
  4. CSS 选择器 :last-child与:last-of-type的区别
  5. Spring Framework简单介绍
  6. 写sql语句统计各个学生各科成绩(case when用法)
  7. IPython introduction
  8. 关于.cap文件分析
  9. 启动avd Android模拟器缓慢 HAXM自动安装失败
  10. [译]GLUT教程 - 键盘高级特性