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