#include void remove_child (GtkWidget *widget, gpointer data){ printf ("remove child\n"); gtk_container_remove (GTK_CONTAINER ((GtkContainer*) data), widget); } void construct (GtkWidget *window1, GtkWidget *play_image) { GtkWidget *align; GtkWidget *box; g_object_ref (G_OBJECT(play_image)); if (GTK_BIN (window1)->child) { GtkWidget *old_align= GTK_BIN (window1)->child; GtkWidget *old_box= GTK_BIN(old_align)->child; gtk_container_foreach (GTK_CONTAINER(old_box), (GtkCallback) remove_child, old_box); gtk_container_remove (GTK_CONTAINER (window1), old_align); } align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); box = gtk_hbox_new (FALSE, 1); gtk_box_pack_start (GTK_BOX (box), play_image, FALSE, FALSE, 0); gtk_container_add (GTK_CONTAINER (align), box); gtk_container_add (GTK_CONTAINER (window1), align); gtk_widget_show_all (align); g_object_unref (play_image); } int main (int argc, char *argv[]) { GtkWidget *window1; GtkWidget *togglebutton1; GtkWidget *play_image; GtkWidget *stop_image; gtk_init (&argc, &argv); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); play_image = gtk_image_new_from_stock("gtk-media-play", GTK_ICON_SIZE_BUTTON); stop_image = gtk_image_new_from_stock("gtk-media-stop", GTK_ICON_SIZE_BUTTON); g_object_ref (G_OBJECT(play_image)); construct (window1, play_image); construct (window1, stop_image); construct (window1, play_image); gtk_widget_show_all (window1); gtk_main (); return 0; }