2

我目前正在用 C 语言编写一个模拟器,它完全脱离 SDL 运行,使用 SDL 表面进行渲染和 SDL 事件。但是现在我已经完成了仿真部分,我希望在窗口顶部添加一个菜单,例如 Windows 上的“文件、编辑、帮助”菜单。所以我可以添加设置选项,加载ROM等。

我见过一些实现,但它们需要 c++(我知道 c++,但从未将它与 c 结合使用),或者与 windows API 交互。理想情况下,我所追求的是使用多平台 GUI,例如 GTK+(因为我已经有一些使用它的经验,并且这个程序可以在 linux 和 windows 上运行)。

我还阅读了有关能够将 SDL 表面作为 GTK 小部件的父级的信息,但这似乎也不允许我使用 SDL 事件。

有谁知道实现这一目标的方法?


好的,所以我决定重新考虑一些事情,一次只做一件事。目前我正试图让 SDL Surface 显示在 GTK 小部件中,但是目前它似乎没有任何区别,因为 SDL 停留在它的窗口中,而不是进入 gtk 窗口。

GtkWidget *sdlsock;

gui.sdlsock = gtk_event_box_new();
gtk_widget_set_size_request(gui.sdlsock, 500, 300);
char winhack[1024];
sprintf( winhack, "SDL_WINDOWID=%ld", gtk_widget_get_window(sdlsock));
SDL_putenv( winhack );
screen = SDL_SetVideoMode(500, 300, 16, SDL_SWSURFACE);

我在此代码中使用适用于 Windows 的 GTK+ 3.0

4

1 回答 1

0

看来,根据这个答案:Embedding SDL into GTK,你需要做一些技巧来将 gtk 事件注入 SDL。除此之外,它看起来不太可能。

于 2013-02-26T12:37:38.830 回答