870920 Menu

JUCE类库Desktop详解

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

注:iOS系统无Desktop。

Desktop类有两点比较特殊,一是该类并非可视化的组件,也不是窗口,二是无法直接创建该类的对象,通常调用其静态函数获取本类的对象,而后用该对象调用本类的成员函数。

Desktop类的静态函数
 getInstance () 返回当前位于操作系统桌面的Desktop对象
 getMousePosition () 获取鼠标位置
 setMousePosition () 设置鼠标位置
 getLastMouseDownPosition () 获取鼠标最后一次点击的位置
 getMouseButtonClickCounter () 返回自程序运行后,鼠标点击的次数
 setScreenSaverEnabled () 开启或禁用屏幕保护
 isScreenSaverEnabled () 如果屏保未禁用,则返回true
 canUseSemiTransparentWindows () 如果操作系统支持半透明窗口, 则返回true

Desktop类的DisplayOrientation枚举类型,该枚举代表液晶显示器的显示方向(旋转模式)
 Desktop::upright 正常模式
 Desktop::upsideDown 颠倒模式
 Desktop::rotatedClockwise 顺时针90度
 Desktop::rotatedAntiClockwise 逆时针90度
 Desktop::allOrientations 所有的方向

Desktop类常用的成员函数
 setKioskModeComponent () 全屏化给出的组件
 getKioskModeComponent () 返回当前处于全屏的组件
 getNumComponents () 返回当前处于顶级桌面窗口的组件数量
 getComponent () 基于给出的索引返回某个桌面型组件
 findComponentAt () 查找包含给定点的组件
 getAnimator () 返回本类所持有的ComponentAnimator动画器
 getDefaultLookAndFeel () 返回当前使用的LookAndFeel
 setDefaultLookAndFeel () 设置默认的LookAndFeel
 getNumMouseSources () 返回当前所使用的输入源的数量
 getMouseSource () 基于给出的索引返回某个MouseInputSource
 getMainMouseSource () 返回本程序所使用的主鼠标输入设备
 getNumDraggingMouseSources () 返回当前处于拖放模式的输入源的数量
 getDraggingMouseSource () 基于给出的索引返回当前处于拖放模式的输入源
 beginDragAutoRepeat () 确保鼠标或其他输入源拖拽时所产生的事件无停滞
 getCurrentOrientation () 返回可旋转的显示器的当前旋转模式
 setOrientationsEnabled () 设置显示器的旋转模式
 isOrientationEnabled () 判断是否启用了旋转桌面
 getDisplays () 获取当前的显示器组(一或多个显示器所构成)

Desktop的嵌套类

  • Desktop::Displays 代表构成计算机桌面的一组显示器,该类是Desktop的嵌套类。
  • Desktop::Displays::Display Desktop::Displays的嵌套结构体,Displays类的有关函数将返回该结构体的对象。