Как получить окно gdk для окна gtk в C?
Я пытаюсь установить курсор на часы. Проблема в том, что gdk_set_cursor() требует gdk_window. Как я могу получить gdk_window gtk_window в C? Я видел примеры для gtkmm и pygtk, но я не могу найти соответствующую функцию C.
2 ответа
Решение
GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(gtk_window));
или, предварительно GTK 2.14, но теперь запрещено:
GdkWindow *gdk_window = gtk_window->window;
В моем случае gdk_window_set_cursor не работал, потому что gtk_widget_get_window возвращал недопустимый дескриптор, поскольку он еще не был реализован. Перемещение этих строк после того, как окно стало видимым, решило это для меня.
Из документов:
... Например, виджет->окно будет создан при реализации виджета. Обычно реализация происходит неявно; если показать виджет и все его родительские контейнеры, то виджет будет реализован и...