私は現在、レンダリングと SDL イベントに SDL サーフェスを使用して SDL から完全に実行される C でエミュレーターを作成しています。ただし、エミュレーション部分は終了しました。ウィンドウにある「ファイル、編集、ヘルプ」メニューのようなメニューをウィンドウの上部に追加したいと考えています。そのため、設定、ロード ROM などのオプションを追加できます。
いくつかの実装を見てきましたが、それらは c++ (c++ は知っていますが、c と組み合わせて使用したことはありません)、または Windows API との対話を必要とします。理想的には、代わりに GTK+ などのマルチプラットフォーム GUI を使用することです (既にこれを使用した経験があり、このプログラムは Linux と Windows で実行されるため)。
SDL サーフェスを GTK ウィジェットにペアレント化できることについても読みましたが、これでは SDL イベントも使用できないようです。
これを達成する方法を知っている人はいますか?
わかりましたので、いくつかのことを再考し、一度に 1 つのことに取り組むことにしました。現時点では、SDL サーフェスを 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 を使用しています