極めて個人的なJUCEのTips。
Yes/Noのダイアログ (非同期)
これを書いてる今の時代、ダイアログボックスは基本的に非同期で扱うべきものらしい。
sample.cpp
void showYesNoDialog()
{
// ダイアログオプションを設定
auto options = juce::MessageBoxOptions()
.withIconType (juce::MessageBoxIconType::QuestionIcon)
.withTitle ("Confirmation")
.withMessage ("Do you want to delete this item?")
.withButton ("Yes")
.withButton ("No");
// 非同期でダイアログを表示
juce::AlertWindow::showAsync(options, [this, rowNumber](int result) {
if (result == 1) // "Yes" ボタンがクリックされた場合
{
processor->deleteServerPatchData(rowNumber);
}
else
{
// "No"の場合の処理
}
});
}
Yes/No/Cancelの場合は下記。
sample.cpp
void showYesNoCancelDialog()
{
// ダイアログオプションを設定
auto options = juce::MessageBoxOptions()
.withIconType (juce::MessageBoxIconType::QuestionIcon)
.withTitle ("Confirmation")
.withMessage ("Do you want to delete this item?")
.withButton ("Yes")
.withButton ("No")
.withButton ("Cancel");
// 非同期でダイアログを表示
juce::AlertWindow::showAsync(options, [this, rowNumber](int result) {
if (result == 1) // "Yes" ボタンがクリックされた場合
{
processor->deleteServerPatchData(rowNumber);
}
else if (result == 2)
{
// "No"の場合の処理
}
else if (result == 0)
{
// "Cancel"の場合の処理
}
});
}