Я относительно новичок в программировании на gtk в C. Я использую Mac OS 10.9 с XQuartz, с gtk3 (3.14.9_0 + x11, установленным через macports). Я пытаюсь заставить родительское окно отображать значок в строке заголовка. Я нашел следующий пример из http://zetcode.com/tutorials/gtktutorial/firstprograms/Отображение значка в Gtk 3
#include <gtk/gtk.h>
GdkPixbuf *create_pixbuf(const gchar * filename)
{
GdkPixbuf *pixbuf;
GError *error = NULL;
pixbuf = gdk_pixbuf_new_from_file(filename, &error);
if(!pixbuf) {
fprintf(stderr, "%s\n", error->message);
g_error_free(error);
}
return pixbuf;
}
int main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "icon");
gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("web.png"));
gtk_widget_show(window);
g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_main();
return 0;
}
Программа компилируется без ошибок и предупреждений, а также витрины, когда я запускаю его без ошибок, сообщенных, за исключение того, что нет иконок, кроме обычного значка Х11 в заголовка. Я убедился, что у меня есть файл web.png в моем рабочем каталоге, и у меня закончились представления о том, что может быть неправильным. Существуют ли особые требования к файлу PNG, который преобразуется в GdkPixbuf? И если да, то почему я не получаю сообщение в stderr? Большое спасибо за любую помощь, которую вы можете предоставить.