) , ...A funcao que "converte" algo em um GtkWindow e... GTK_WINDOW() !(estou colocando "converte" entre aspas porque nao e uma conversao propriamente dita, e mais uma indicacao de tipo)Mais devagar:a variavel window e um GtkWidget;a "funcao" GTK_WINDOW( window ) indica que a variavel window agora devera ser tratada como uma GtkWindow. Nenhum problema aqui, pois como vimos, pelo paradigma de orientacao a objetos, uma GtkWidget E um GtkWindow!como window agora sera tratada como um GtkWindow, podemos passar ela para a funcao gtk_window_set_title sem problemas!Cuidado, se voce consultar o livro de Andrew Krause, ele usa o termo "cast" para indicar essa operacao de "conversao":"... you can cast an object as a GtkWindow with GTK_WINDOW() ..."Cuidado para nao confundir com o cast basico da linguagem C, que tem outra sintaxe (tipo para o qual vamos converter entre parenteses, como em ... = (int) ... ).Alguns "casts" disponiveis:para GObject: G_OBJECT()para GtkObject: GTK_OBJECT()para GtkWidget: GTK_WIDGET() - Como sempre criaremos objetos do tipo GtkWidget, este "cast" raramente sera usado.para GtkContainer: GTK_CONTAINER()para GtkBin: GTK_BIN()... ou seja, uma funcao cujo nome e o tipo para o qual queremos "converter" em maiusculas. Simples assim.Falta o segundo parametro, o ponteiro para const gchar. Isso nada mais e que uma string, que sera o texto da barra de titulo da janela. Se voce lembrar, quando passamos algo como "bla bla bla" (uma string) para uma funcao, estamos na verdade passando o endereco inicial dessa string. Por exemplo, vamos lembrar a funcao fopen, que abre um arquivo para leitura e/ou escrita. Seu uso e, por exemplo:arquivo = fopen ("dados_vendas.txt", "w");Seu prototipo e:FILE * fopen ( const char * filename, const char * mode )... ou seja, a variavel filename (ponteiro para caracter) recebe o endereco inicial da string "dados_vendas.txt".Agora... porque gchar, e nao apenas char?Isso e feito para permitir compatibilidade em plataformas diferentes. Voce lembra que, cada tipo de dado em C tem um tamanho em bytes especifico, de acordo com a plataforma que esta sendo usada. Por exemplo (hipotetico), um int numa plataforma pode requerer 4 bytes de espaco, enquanto que em outra plataforma pode requerer 8 bytes. Para evitar esses problemas, e possibilitar uma compilacao multiplataforma mais transparente, a biblioteca GLIB fornece tipos de dados padronizados, que serao "iguais" mesmo em plataformas diferentes. Assim, se no seu programa voce utiliza os tipos de dados fornecidos pela GLIB, voce podera compilar em diversas plataformas diferentes sem se preocupar com as diferencas entre elas, no que diz respeito aos tipos de dados.Alguns tipos fornecidos pela Glib:gchar - equivalente ao chargint - equivalente ao intglong - equivalente ao longgboolean - valores TRUE e FALSE (nao tem equivalente no C)Pra resumir:gtk_window_set_title (GTK_WINDOW (window), "Alou, mundo!!");... vai colocar a string "Alou mundo!!" na barra de titulo da janela indicada pela variavel window.Proxima linha:gtk_widget_show (window);Voce deve estar pensando, "agora sim! beleza! um comando para efetivamente mostrar a janela na tela" !!!No baby, ainda nao...Este comando apenas DEFINE a visibilidade de um certo objeto (isto e, se ele esta visivel ou invisivel).Essa questao da visibilidade e mais complexa do que parece num primeiro momento. Vejamos.Neste nosso primeiro