В Gtk3 было довольно много изменений.Нет члена window
, выставленного как часть GtkWidget
, участники были перемещены в GtkWidgetPrivate
, который является непрозрачной структурой, поэтому вы не можете получить доступ к членам напрямую из GtkWidget
.Вам нужно будет использовать функцию доступа, в этом случае, когда вам нужен window
член GtkWidget
, вы можете использовать gtk_widget_get_window
, но это может не исправить пример кода, с которым вы работаете.Обратите внимание, что сигнал expose_event
был заменен на сигнал draw
, поэтому вам нужно будет обновить функцию, которая на самом деле рисует должным образом (я думаю, on_expose_event
в вашем случае).Пожалуйста, обратитесь по этой ссылке , чтобы увидеть список изменений, необходимых для перехода на Gtk3.Вы можете обратиться к источнику, предоставленному приложением gtk-demo
или demos/gtk-demo
из исходного кода Gtk3, чтобы получить образец кода.
Что касается изображения, которое не отображается в случае Gtk2, если вы работаете с образцом изображения, убедитесь, что изображениефайл доступен по пути, указанному в источнике.
Надеюсь, это поможет!