SDL2 消息框不显示颜色,parent 不起作用

SDL2 Message Box not showing colors, parent does not work

SDL_Window* mainWindow = NULL;

void cleanup();

const SDL_MessageBoxButtonData msgBox_CloseWindow_Buttons [] = {
    {0, 0, "Nope"},
    {SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT, 1, "Yup"},
    {SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT, 2, "Cancel it"},
};

const SDL_MessageBoxColorScheme msgBox_CloseWindow_ColorScheme = {
    {
        // SDL_MESSAGEBOX_COLOR_BACKGROUND
        {255, 0, 0},
        // SDL_MESSAGEBOX_COLOR_TEXT
        {0, 255, 0},
        // SDL_MESSAGEBOX_COLOR_BUTTON_BORDER
        {255, 255, 0},
        // SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND
        {0, 0, 255},
        // SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED
        {255, 0, 255}
    }
};
const SDL_MessageBoxData msgBox_CloseWindow_Data = {
    // flag
    SDL_MESSAGEBOX_INFORMATION,
    // window
    mainWindow,
    // title
    "Game Terminating",
    // message
    "Do you really want to close this way?",
    // number of buttons
    SDL_arraysize(msgBox_CloseWindow_Buttons),
    msgBox_CloseWindow_Buttons,
    &msgBox_CloseWindow_ColorScheme
};

void closeWindowMessageBox()
{
    if(SDL_ShowMessageBox(&msgBox_CloseWindow_Data, &nbutton) < 0)
    {
        SDL_Log("error displaying box");
        exit(1);
    }
    switch (nbutton)
    {
        case -1:
            SDL_Log("Game Closing - No Selection");
            break;
        case 0:
            SDL_Log("Game Closing - Rejected");
            break;
        case 1:
            SDL_Log("Game Closing - Approved");
            cleanup();
            break;
        case 2:
            SDL_Log("Game Closing - Canceled");
            break;
    }
}

void Game::ProcessEvents(SDL_Event event)
{
    switch(event.key.keysym.sym)
    {
        ...
    }
    switch(event.type)
    {
        case SDL_QUIT:
                closeWindowMessageBox();
                break;
    }
}

但是,消息框没有颜色
也可能没有 parent(不在主 window 的顶部)
它不应该阻止我点击 parent,我的意思是像 .NET
中的对话框 SDL 中的 parent window 是什么意思?

如你所见,我从游戏window(消息框最小化游戏没有阻止我)
这个 灰色 消息框 不是 ,它只是在屏幕上的某个地方,没有 parent 容纳它。

我正在研究最新的 SDL2,使用 parentcolors 就像将它们设置为 NULL.

我什至尝试从 documentation 复制整个示例并用它替换所有 closeWindowMessageBox() 函数,除了 parent,替换为 mainWindow.

,现在 parent 起作用了(防止其他事件发生,直到我单击按钮)。

我想因为我需要先初始化mainWindow
closeWindowMessageBox()mainWindow 初始化后被调用,所以它有效

不同之处在于,在header中定义它们时,它会采用mainWindow的当前值,即NULL,希望对遇到同样问题的人有所帮助。

仍然没有颜色,我错过了什么?,谢谢。

配色方案功能在 Windows 中不可用,或者至少目前不可用。