menu - Allegro 5 在 Windows 中显示菜单,但在 linux 中不显示
问题描述
我最近已更改为 Allegro 5 lib。一切正常,我选择了它的“跨平台”。我有带有 2 个 Virtual Box Mahines 的 Windows 10:一个带有 Ubuntu 12.04,另一个带有 Fedora 34。该系统还可以使用 Windows 10 和 Ubuntu 12.04 双引导。所以我决定看看我的应用程序是否可以在 Linux 上运行。
当我单击窗口并打开一个对话框以选择要加载的文件时,Allegro DIALOG 工作正常。
然后我添加了一个窗口菜单,但这次我也在 Ubuntu 和 Fedora 下编译了 allegro 应用程序,但它没有显示菜单。该应用程序编译得很好,我改变了一些东西,因为它是一个 Winapi (是的,我没有调用任何像 API 函数这样的不可移植代码)应用程序到 Allegro 5 但正如我所说的在 linuxes 下编译和链接很好,但两者都没有当我运行它时,Ubuntu 和 Fedora 都会显示菜单。
知道为什么会这样吗?
我的制作菜单代码:
#pragma once
#include <allegro5/allegro5.h>
#include <allegro5/allegro_native_dialog.h>
enum {
FILE_ID = 1,
FILE_LOADROM_ID,
FILE_CLOSEROM_ID,
FILE_EXIT_ID,
EMULTOR_RESET_ID,
WINDOW_1X,
WINDOW_2X,
WINDOW_3X,
WINDOW_4X
};
ALLEGRO_MENU_INFO main_menu_info[] = {
ALLEGRO_START_OF_MENU("&File", FILE_ID),
{ "&Load Rom", FILE_LOADROM_ID, 0, NULL },
{ "&Close Rom", FILE_CLOSEROM_ID, 0, NULL },
ALLEGRO_MENU_SEPARATOR,
{ "E&xit", FILE_EXIT_ID, 0, NULL },
ALLEGRO_END_OF_MENU,
ALLEGRO_START_OF_MENU("&Emulator", 0),
{ "&Reset", EMULTOR_RESET_ID, 0, NULL },
ALLEGRO_END_OF_MENU,
ALLEGRO_START_OF_MENU("&Window", 0),
{ "&1X", WINDOW_1X, 0, NULL },
{ "&2X", WINDOW_2X, 0, NULL },
{ "&3X", WINDOW_3X, 0, NULL },
{ "&4X", WINDOW_4X, 0, NULL },
ALLEGRO_END_OF_MENU,
ALLEGRO_END_OF_MENU
};
class Menu
{
public:
void Init(ALLEGRO_DISPLAY* allegro_display, ALLEGRO_EVENT_QUEUE * queue)
{
al_init_native_dialog_addon();
ALLEGRO_MENU* menu;
menu = al_build_menu(main_menu_info);
al_set_display_menu(allegro_display, menu);
al_register_event_source(queue, al_get_default_menu_event_source());
}
};
然后我在linux下编译:
g++ app.cpp -o app -lallegro -lallegro_audio -lallegro_dialog
我已经在 linux 下安装了 Allegro 5:
费多拉:sudo dnf install allegro5*
Ubuntu:sudo apt install allegro5*
我已经在虚拟机中的 linux 下进行了测试,也在实际安装中进行了测试。
有什么问题?
解决方案
推荐阅读
- azure - 使用 Terraform azure 添加应用程序作为贡献者
- youtube-data-api - youtube api nextPageToken 仍然返回结果
- swift - NSScrollView 不滚动
- php - Goutte 无法提交表单
- rxjs - BehaviourSubject 的先前值
- javascript - ejs变量不显示用户名
- javascript - 使用Javascript单击按钮后如何使页面重新加载?
- django - django_filter ModelMultipleChoiceFilter - 错过的错误请求
- mysql - Sequelize 为 DATE 类型创建 SQL
- typescript - 用于 redux 操作的打字稿