2016-12-30 10 views
2

Gtk 3을 그래픽 라이브러리로 사용하는 코드 :: block을 사용하여 ac 응용 프로그램을 만들려고합니다. 이 버전의 gtk는 gtk 2와 약간 다른 튜토리얼입니다. 또는 exampes 온라인으로 avaiable 있습니다. 나는 GifkPixmap이라는 유형을 사용하여 Windows에 gif를로드 할 수 있도록 허용하고 싶습니다. 검색 한 후에 유형이 사용되지 않으며 gtk 새 버전 (3)에서 제거되었습니다. 공식 문서 (gtk2에서 gtk3로 마이그레이션)에서 GdkPixmap이 만든 작품을 만들기 위해 카이로 기능을 사용할 수 있지만 변경 및 이전 방법을 찾지 못했습니다. 오류 알 수없는 유형 이름 'GdkPixmap'Gtk 3 창에 Gif를로드하십시오. C C++

#include <gtk/gtk.h> 
#include <stdio.h> 
#include <stdlib.h> 

GdkPixbuf *load_pixbuf_from_file (const char *filename) 
{ 
    GError *error = NULL; 
    GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (filename, &error); 

    if (pixbuf == NULL) 
    { 
     g_print ("Error loading file: %d : %s\n", error->code, error->message); 
     g_error_free (error); 
     exit (1); 
    } 
    return pixbuf; 
} 

GdkPixbufAnimation *load_pixbuf_animation_from_file (const char *filename) 
{ 
    GError *error = NULL; 
    GdkPixbufAnimation *pixbuf = gdk_pixbuf_animation_new_from_file (filename, &error); 

    if (pixbuf == NULL) 
    { 
     g_print ("Error loading file: %d : %s\n", error->code, error->message); 
     g_error_free (error); 
     exit (1); 
    } 
    return pixbuf; 
} 

int main (int argc, char **argv) 
{ 
    GtkWidget *window = NULL; 
    GdkPixbuf *image = NULL; 
    GdkPixbufAnimation * anim = NULL; 
    GtkWidget *widget = NULL; 
    GdkPixmap *background = NULL; 
    GtkStyle *style = NULL; 

    gtk_init (&argc, &argv); 
    /* Load a non animated gif */ 
    image = load_pixbuf_from_file ("C://Users//Pcc//Downloads//66.gif"); 
    // widget = gtk_image_new_from_pixbuf (image); 
    gdk_pixbuf_render_pixmap_and_mask (image, &background, NULL, 0); 
    style = gtk_style_new(); 
    style->bg_pixmap [0] = background; 
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    gtk_window_set_title (GTK_WINDOW(window), "Load Image"); 
    gtk_window_set_default_size (GTK_WINDOW (window), 400, 300); 
    gtk_widget_set_style (GTK_WIDGET(window), GTK_STYLE (style)); 
    gtk_window_set_transient_for (GTK_WINDOW (window), NULL); 

    GtkWidget *hbox = NULL; 
    hbox = gtk_hbox_new (0, FALSE); 
    gtk_container_add (GTK_CONTAINER(window), hbox); 

    GtkWidget *button = NULL; 
    button = gtk_button_new_with_label ("Sonic"); 
    gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); 

    gtk_widget_show_all (window); 
    gtk_main(); 
    return 0; 
} 

사용하고 난 생각 해달라고되지 않는 GTK를 설치

유래에 설립 된이 코드는 gtk3 컴파일러에 작업을했다 나던 창을 사용하여 GTK2에로드 지프의 예입니다 좋다 gk를로드하는 gtk3에서 작동하는 코드 예를 게시하십시오.

답변