|
src_1:
//
# include <gtk/gtk.h>
void
ButtonClick (GtkButton *bt, gpointer data)
{
GdkDrawable *drawable;
GtkWidget *drawingarea;
drawingarea = GTK_WIDGET (data);
drawable = drawingarea->window;
gdk_draw_point (drawable, drawingarea->style->black_gc,
10, 10);
}
GtkWidget *
BuildUserInterfact (void)
{
GtkWidget *vbox;
GtkWidget *drawingarea;
GtkWidget *button;
vbox = gtk_vbox_new (FALSE, 5);
gtk_widget_show (vbox);
drawingarea = gtk_drawing_area_new ();
gtk_box_pack_start (GTK_BOX (vbox), drawingarea, TRUE, TRUE, 5);
button = gtk_button_new_with_label ("Click me to draw");
gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, FALSE, 5);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
GTK_SIGNAL_FUNC (ButtonClick), drawingarea);
return vbox;
}
gint
main (gint argc, gchar **argv)
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_container_add (GTK_CONTAINER (window),
BuildUserInterface ());
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
//
src_2:
# include <gtk/gtk.h>
gint
main (gint argc, gchar **argv)
{
GtkWidget *window;
GdkDrawable *dable;
GtkWidget *darea;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
darea = gtk_drawing_area_new ();
gtk_container_add (GTK_CONTAINER (window), darea);
dable = darea->window; // or dable = GDK_DRAWABLE (darea->window);
-->> gdk_draw_point (dable, darea->style->black_gc, 10, 10);
gtk_widget_show_all (window);
gtk_main ();
return 0;
}
////////////////
src_1: 可以运行
src_2: 总是出错 assert ( dable != NULL) 也就是箭头指向的语句!
/////////////
谁能告诉我这是怎么回事?? 谢谢! |
|