标签归档:JUCE模块

JUCE类库FileBasedDocument详解

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

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

继续阅读JUCE类库FileBasedDocument详解

与String类关系密切的类群

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

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

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

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

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

ApplicationCommandManager 3-3

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

继续阅读ApplicationCommandManager 3-3

ApplicationCommandManager 3-2

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

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

继续阅读ApplicationCommandManager 3-2

ApplicationCommandManager 3-1

本小节内容涉及以下类:

  • ApplicationCommandManager 命令管理器,数据容器,保存快捷键集合对象
  • KeyPressMappingSet 快捷键集合,保存所有命令及其详细信息
  • ApplicationCommandInfo 命令信息,代表一条具体的命令
  • ApplicationCommandManagerListener 捕获命令管理器所产生的消息(通常无需直接使用)
  • ApplicationCommandTarget 命令目标,定义所有命令,并执行具体的功能
  • InvocationInfo 命令目标所调用的命令信息

继续阅读ApplicationCommandManager 3-1

JUCE类库Time类详解

日期和时间类Time的实例代表一个精确的绝对时间点,其内部精度为毫秒 。可基于给出的毫秒数创建本类的对象,也可基于给出的年月日时分秒来创建对象。本类的一大批成员函数可返回当前对象所代表的年/月/日/时/分/秒/毫秒的数值类型和字符串类型,该对象所处于的月份名称,星期几名称,是本年度/本月/本周的第几天等等。并可设置计算机时钟。

实际编程中,几乎无需显式创建Time对象,而是直接调用静态函数getCurrentTime()来返回本类的栈对象,而后使用该对象串联调用其它非静态函数。Time类重载了一大批运算符,可用于和时间点有关的各类常规运算。

继续阅读JUCE类库Time类详解