上一篇漏掉了一个主类别的函数:
void anotherInstanceStarted (const String& commandLine) override
{
}
以 Windows 系统为例,执行档 .exe 被重覆执行时,会有多个 Process 产生。而 anotherInstanceStarted
这支 Callback 函数当「条件」满足时,会被呼叫。
预设情况下,JUCE 程序可以同时运行。不过,有时候会限制同时间只有一支程序执行。要达到这个目的,只要修改主类别中的 moreThanOneInstanceAllowed()
函数回传值,由 true
改成 false
:
class SamGUIApplicationApplication : public juce::JUCEApplication
{
public:
SamGUIApplicationApplication() {}
bool moreThanOneInstanceAllowed() override { return false; }
};
上述改动编译後,同支程序被执行第二次时,anotherInstanceStarted()
会被呼叫,而 commandLine
参数是第二次执行时指示的参数。例如:
demo.exe
demo.exe 2ndArg
anotherInstanceStarted()
会被呼叫,而 commandLine
的值为「2ndArg」。
不少应用程序只允许一个 Process 存在,JUCE 只要改动一个地方即可达到目的。轻松惬意。
前述几个函数是 JUCE GUI Application 的核心,接下来是视窗应用程序中,负责「视窗」显示的核心。
SamGUIApplicationApplication
class 内含了一个 MainWindow
class,继承自 juce::DocumentWindow
。MainWindow
负责下图中,红框以外的区域:
上图中的系统按钮(关闭、缩小、最大化),以及视窗大小是否可变,预设视窗大小,是否以全萤幕的方式呈现,是否要隐藏等逻辑,通通由 MainWindow
负责。其预设建构式如下:
MainWindow (String name)
: DocumentWindow (name,
Desktop::getInstance().getDefaultLookAndFeel()
.findColour (ResizableWindow::backgroundColourId),
DocumentWindow::allButtons)
{
setUsingNativeTitleBar (true);
setContentOwned (new MainComponent(), true);
#if JUCE_IOS || JUCE_ANDROID
setFullScreen (true);
#else
setResizable (true, true);
centreWithSize (getWidth(), getHeight());
#endif
setVisible (true);
}
底下列出几个重点说明。JUCE 的视窗风格有两种,一种是符合系统原生外观样式(如上图);另一种是 JUCE 自有风格,如下:
只要将 MainWindow
建构式中的 setUsingNativeTitleBar
参数改成 false
,表示不使用原生(Native)的视窗风格。
<<: Day 7 - DOM - Window Object
4. Some Assembly Required 1 按右键,检视网页原始码 点击js档看到下面,...
万事起头难 平常的学习方式都是遇到问题才去学、上哪门课学什麽、对哪个主题有兴趣才去学,现在想要有组织...
>SELECT:查询 SELECT 基本语法 SELECT '栏位名称' FROM '资料表名...
因为Http是无状态的,我们可以利用session让使用者表明自己的身份。 首先我们必须先建立一个s...
Array阵列 简单来说 阵列就是一个有序的序列而且里面可以储存不定数量的任何值 我是把它想像成一个...