Casting You'll notice as you go on, that GTK uses a type casting system. This is always done using macros that both test the ability to cast the given item, and perform the cast. These are all used to cast arguments in functions. You'll see them in the examples, and can usually tell when to use them simply by looking at the function's declaration. As you can see below in the class hierarchy, all GtkWidgets are derived from the GtkObject base class.
Many widgets are also containers.
If you look in the class hierarchy below, you'll notice that many widgets derive from the GtkContainer class. Unfortunately, these macros are not extensively covered in the tutorial, but I recommend taking a look through the GTK header files. It can be very educational. In fact, it's not difficult to learn how a widget works just by looking at the function declarations. 5.2 Widget Hierarchy For your reference, here is the class hierarchy tree used to implement widgets.