标签归档:JUCE相关

JUCE 4.0.1发布

11月4日,JUCE 4.0.1发布,主要变化有:

– 发布Projucer。Running注:Projucer类似于Introjucer,是一款独立运行的“准IDE”软件,专为使用JUCE类库的C++程序员打造。几年前Jules曾发布过一个操作演示,最让人惊奇的是该软件能做到“所见即所得”,即修改代码的同时,该软件后台自动进行基本无延迟的同步编译,程序员能实时看到代码的运行效果。Jules发布视频演示后,着实在业内引起了一些轰动,甚至惊动了C++界赫赫有名的大佬Scott Meyers,此人专为此写了一篇博客。后来由于一些变故和个人原因,Jules停止了Projucer的持续开发,再后来就没有下文了。没想到突然就冒了出来。这次发布的版本,由于笔者尚未试用,不清楚是否与几年前的那个Projucer一致。有一点可以肯定,Projucer目前不能在Windows平台下正常使用,LLVM的问题……

继续阅读JUCE 4.0.1发布

JUCE类库FileBasedDocument详解

先了解一下程序中读写文件的大体流程(分两种情况):

  1. 从无到有的生成文件。运行程序,内部创建各种各样的数据类型和数据对象,一番操作处理后,将数据保存到磁盘文件中。该过程往往利用临时创建或某些类一直持有的XmlElement、ValueTree、JSON等对象(数据模型)来读取、计算和设置(修改、新增等等)各种数据。如有需要时,将这些对象中的数据保存到磁盘文件中。
  2. 读写已有的数据文件。和上个情况差不多,所不同的,内部的数据模型对象在创建时即直接初始化为磁盘文件中的数据,即:先加载和读取磁盘文件中的数据,将所需的数据设置到数据模型中(比如XmlElement对象的属性值)。而后,针对这些数据模型的对象进行读取和设置操作,处理完毕,将数据回写到磁盘文件中。

继续阅读JUCE类库FileBasedDocument详解

与String类关系密切的类群

本节介绍JUCE类库中一批与String类关系密切的相关类。

CharacterFunctions 该类封装了一大批用于处理字符和字符串的静态函数,比如:大小写转换,检测是否字母、数字、空格,复制和比较C风格字串等等

URL 与网址有关的操作处理。大部分成员函数的参数或返回值为字符串对象。除此之外,该类还可获取某个网页的具体内容,返回值为输入流、二进制数据、文本数据、XML数据等等

newLine NewLine类中预定义的全局对象,相当于换行符’\n’。注意是小写n开头。示例:

继续阅读与String类关系密切的类群

JUCE类库String类详解

String字符串类的重要性无需多言。该类其实也是一种数据容器(char类型的数据容器),只不过由于比较特殊和重要,将其单列一节。JUCE类库的String类与C++标准库的string类的功能与使用基本一致,但又有差别。JUCE::String内部使用了引用计数技术,多了一批实用和方便的成员函数,而又不臃肿,使用时更加顺手和高效。

JUCE String与C++标准库std::string互相转换的语法为:

继续阅读JUCE类库String类详解

JUCE类库Desktop详解

Desktop类继承自DeletedAtShutdown, Timer和AsyncUpdater等基类,它本身并不是组件。该类代表当前操作系统的桌面(支持多显示器模式),用来容纳并管理桌面型组件、输入源(鼠标和触摸均为输入源)、一到多个显示器等等。一个或多个Component组件可成为桌面型组件(桌面窗口)。也就是说,Desktop类没有继承自Component,而是聚合了Component组件、Displays显示器、MouseInputSource输入源、ComponentAnimator组件动画器、Point点、Rectangle矩形、Timer计时器、LookAndFeel界面外观等类的对象。

继续阅读JUCE类库Desktop详解

ApplicationCommandManager 3-3

与ApplicationCommandManager命令管理器和ApplicationCommandTarget命令目标关系异常紧密且非常重要的是ApplicationCommandInfo命令信息结构体,其代表每一条命令的详细信息,命令目标类的getCommandInfo()函数的执行结果,即将有关数据保存到该结构体中。其枚举、成员函数和数据成员均为public类型的。

继续阅读ApplicationCommandManager 3-3

ApplicationCommandManager 3-2

由上例可知,如此一来,所有程序命令目标类的命令全部集中在顶级窗口中调度,即:ApplicationCommandManager程序命令管理器对象将所有的命令目标类与所有命令的快捷键、命令所执行的功能等等集中到了一起,不管当前哪个命令目标类拥有焦点,只要按下快捷键,就由顶级窗口统一调度和分配。

很大程度上讲,程序命令管理器就像一个桥梁和纽带,更像一个所有命令的容器,谁执行我不管,我只保管所有命令,接收到有关消息后(比如用户按下了快捷键),我就及时捕获该按键,并将其转发给已经注册给我的命令目标对象。这一点非常符合OOP的职责单一、低耦合、依赖倒转等设计原则,更大大简化了编程中对象之间的组合与聚合。理解并运用JUCE类库的这一机制,非常重要!

继续阅读ApplicationCommandManager 3-2