|
|
这个程序是一个画图程序,编译没错,执行出现错误.
#include<gtk/gtk.h>
#include<stdio.h>
#include<gdk/gdk.h>
static GtkWidget *area; /*绘图区用于显示*/
static GdkPixmap *map = NULL; /*绘图区用于保存*/
static GdkGC *gc_front = NULL; /*前景色*/
static GdkGC *gc_back = NULL; /*背景色*/
GdkDrawable*drawable;
void draw_init(void)
{
gdk_draw_line(drawable, gc_front,
0,300,500,300);
gdk_draw_line(map, gc_front,
0,300,500,300 );
printf("%s\n","ok!");
}
/*主函数*/
gint main(int argc, char *argv[])
{
GtkWidget *window, *vbox;
GdkColor color; color.red = 65535; color.green = 65535; color.blue = 65535;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window),800,600);
gtk_window_set_title(GTK_WINDOW(window), "the");
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
area = gtk_drawing_area_new();
drawable=area->window;
gtk_widget_set_size_request(area,800,600);
gtk_box_pack_start(GTK_BOX(vbox), area, TRUE, TRUE, 5); /*创建绘图区*/
gtk_widget_modify_bg(area, GTK_STATE_NORMAL, &color);
map = gdk_pixmap_new(drawable, area->allocation.width, area->allocation.height, 1);
gdk_draw_rectangle(map,
area->style->white_gc,
TRUE,
0, 0, area->allocation.width, area->allocation.height);
gc_front = gdk_gc_new(drawable);
color.red = 0;
color.green = 0;
color.blue = 0;/*默认前景为黑色*/
gdk_gc_set_rgb_fg_color(gc_front, &color);
gc_back = gdk_gc_new(drawable);
color.red = 65535;
color.green = 65535;
color.blue = 65535;/*默认背景为色*/
gdk_gc_set_rgb_bg_color(gc_back, &color);
draw_init();
gtk_widget_show_all(window);
gtk_main();
return 0;
}
编译没错,执行出现错误.
(main:4604): Gdk-CRITICAL **: file gdkdraw.c: line 411 (gdk_draw_rectangle): assertion `GDK_IS_GC (gc)' failed
(main:4604): Gdk-CRITICAL **: file gdkgc.c: line 78 (gdk_gc_new): assertion `drawable != NULL' failed
(main:4604): Gdk-CRITICAL **: file gdkgc.c: line 504 (gdk_gc_set_rgb_fg_color):
assertion `GDK_IS_GC (gc)' failed
(main:4604): Gdk-CRITICAL **: file gdkgc.c: line 78 (gdk_gc_new): assertion `drawable != NULL' failed
(main:4604): Gdk-CRITICAL **: file gdkgc.c: line 535 (gdk_gc_set_rgb_bg_color):
assertion `GDK_IS_GC (gc)' failed
(main:4604): Gdk-CRITICAL **: file gdkdraw.c: line 368 (gdk_draw_line): assertion `drawable != NULL' failed
(main:4604): Gdk-CRITICAL **: file gdkdraw.c: line 369 (gdk_draw_line): assertion `gc != NULL' failed
ok! |
|