GTK Geometry Managers
When packing widgets into windows, one can do that directly, like this (assume main_window is the top-level window we created previously):
/* this will store a push button. */
GtkWidget* button;
/* create a push button. */
button = gtk_button_new_with_label("Hello");
/* pack the button into the top-level window. */
gtk_container_add(GTK_CONTAINER(main_window), button);
/* finally, make the button visible. */
gtk_widget_show(button);
However, in this method, we have no control on the placement of widgets in the window. Geometry managers are supposed to give us this control.