为什么学习Juce

JUCE (Jules' Utility Class Extensions)是由Raw MaterialSoftware公布的一套基于c++的跨平台应用程序框架类库(Windows, Mac,Linux)。JUCE的特殊之处在于其友好的用户界面以及强大的音频、图像处理能力。JUCE适合那些想使用干净、快捷、高层的API,而不想把时间浪费在使用不同类库,面向不同平台上的开发人员。JUCE可以胜任大型、复杂的应用程序(C++)的开发。

相对于国内的诸多开源Dui界面库。Juce有很多其它的长处,是一套比較全面,综合性的C++代码库。

一、多线程的维护

比方。大家都比較熟悉的Duilib。Duilib在单线程应用时还比較不错,可是对于复杂的多线程应用程序。就有些力不从心了,由于维护全部控件使用的都是CPaitManagerUI中的控件指针,而CPaintManagerUI又以成员变量的方式存在于CWindowWnd中,当不同的线程。同一时候改动同一个控件的属性时,就相当于不同的线程同一时候操作同一个共享变量。CPU的切换不当非常有可能损坏数据。从而导致程序出现异常。为了维护多线程。Juce自身维护了很多线程同步机制,比方原子数据类型、自旋锁、临界区、事件等,还有配套使用的面向对象的Thread类。这些东西使多线程的编程变得更easy,程序更加健壮。

二、内存的维护

不管是使用malloc开辟内存,还是使用new创建对象。Juce都封装了自己主动内存释放机制,类似于智能指针,在小范围内使用智能指针,能够无需考虑内存和对象的析构。最基本的是。Juce还实现了类似于脚本语言的WeakReference(弱引用)类型。能够有效解决C++编程的垂悬指针问题。

三、全然自绘的界面

像Duilib这种轻量级界面库,Edit使用的还是原生的,这就导致了透明异形窗体的实现很困难。由于带有Layered属性的窗体是无法正常显示子窗体的。还有Duilib用窗体模拟的菜单,尽管外形上模拟的很像。可是机制上还与原生的菜单有很大的区别,这一点笔者亲自做过測试。Juce对这些控件的模拟还是很完美的。其次Juce还实现了普通界面库难以实现这种复杂控件。比方代码编辑器,支持拖拽功能的树控件。显示3D模型的控件等等。另外,Juce自身还实现了强大的画图引擎。能够在GDI和Opengl之间切换。

四、跨平台

        Juce的C++代码能够在不同的平台编译出适合不同平台的应用程序。

事实上Juce的长处还有非常多,这里描写叙述的并不完好。

笔者介绍Juce的长处。不是在贬低国产的开源界面库,鼓舞大家使用Juce。

而是倡导大家通过学习和分析Juce源代码,学习它的编程思想。来不断完好我们自己的界面库。

Juce源代码下载

Juce源代码分析(一)Juce的优势相关推荐

  1. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  2. nux 平台的 libpcap 源代码分析

    nux 平台的 libpcap 源代码分析 施聪 (javer@163.com), 高级程序员.网络设计师 简介: libpcap 是 unix/linux 平台下的网络数据包捕获函数包,大多数网络监 ...

  3. 易语言.尘土界面库2.0版源代码分析(1):缘起

    作者:liigo 原文链接:http://blog.csdn.net/liigo/archive/2009/06/23/4292691.aspx 转载请注明出处:http://blog.csdn.ne ...

  4. 你绝对能看懂的Kafka源代码分析-KafkaConsumer类代码分析

    目录: <Kafka Producer设计分析> <KafkaProducer类代码分析> <RecordAccumulator类代码分析> <Sender类 ...

  5. Android系统默认Home应用程序(Launcher)的启动过程源代码分析

    在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...

  6. 计算机检索的优点,专利检索与分析系统拥有哪些优势?

    专利检索与分析系统拥有哪些优势?现在很多朋友都在了解专利检索与分析系统又有哪些优势,因为他们需要使用这些系统,不少朋友都会利用业余时间搞各种发明专利,并申请发明专利,在申请之前,人们就需要对专利进行检 ...

  7. 《LINUX3.0内核源代码分析》第一章:内存寻址

    https://blog.csdn.net/ekenlinbing/article/details/7613334 摘要:本章主要介绍了LINUX3.0内存寻址方面的内容,重点对follow_page ...

  8. Scrapy源代码分析-经常使用的爬虫类-CrawlSpider(三)

    CrawlSpider classscrapy.contrib.spiders.CrawlSpider 爬取一般站点经常使用的spider.其定义了一些规则(rule)来提供跟进link的方便的机制. ...

  9. Android 中View的绘制机制源代码分析 三

    到眼下为止,measure过程已经解说完了,今天開始我们就来学习layout过程.只是在学习layout过程之前.大家有没有发现我换了编辑器,哈哈.最终下定决心从Html编辑器切换为markdown编 ...

最新文章

  1. “一不小心”成为大佬:Rob Knight 的传奇故事
  2. python 数据分析学什么-从零开始学数据分析,什么程度可以找工作?
  3. Spring自学教程-ssh整合(六)
  4. 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST
  5. 使用Xpath+多进程爬取诗词名句网的史书典籍类所有文章。update~
  6. Android之页面有变化用onWindowFocusChanged来监听权限是否开启
  7. MATLAB安装第三方工具箱
  8. samba加入windows 2003域
  9. 简单的计算机英语文章,简单的英语小短文欣赏
  10. @Autowired 与 @Resource的区别
  11. 计算机二级省份,【计算机二级】这些省份发布报名时间!调整前的最后一次考试!...
  12. AC日记——向量点积计算 openjudge 1.6 09
  13. 一个网卡设备配置两个不同网段的IP地址
  14. 【Vijos1659】河蟹王国
  15. linux 安裝 curl的 dev 包,R包:RCurl和curl包在Linux上安装失败
  16. 使用FlashFTP上传文件到指定服务器
  17. 微信撤回软件安卓版_微信无限时间撤回软件
  18. 软件的发展历史(时间轴)
  19. springboot整合mongodb
  20. Heat模板及简单应用

热门文章

  1. 正则表达式 html链接,ASP超级链接和HTML函数正则表达式 修正版
  2. mysql设计数据集市_数据集市设计
  3. ie浏览器修复_Win8系统电脑无法打开运行IE浏览器的解决方法
  4. c语言sprt的程序怎么用,sqrt函数在c语言中怎么用?
  5. 2021年春季学期-信号与系统-第十二次作业参考答案-第六小题
  6. 基于AD5272多组变阻器电路设计
  7. linux 批量启动服务器,批量部署Linux操作系统systemimager 使用
  8. mysql 设置表的大小_mysql InnoDB建表时设定初始大小的方法
  9. python空字典对象相当于false吗_python怎么判断某一对象是否为字典
  10. vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)