LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 543|回复: 0

doubleelec大哥,能给看下程序吗?写的完整程序,看一下怎么回事,郁闷死了!

[复制链接]
发表于 2005-6-3 10:14:58 | 显示全部楼层 |阅读模式
这个程序是一个画图程序,编译没错,执行出现错误.
#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!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表