programa, estamos trabalhando apenas com um unico objeto (uma janela). Nao podemos esquecer que num programa "real", teremos varios objetos ao mesmo tempo, e esses objetos estarao organizados numa hierarquia: uma janela contera outros objetos. Um desses objetos pode ser uma "frame" (caixa), que pode conter outros objetos (botoes, labels, caixas de texto para digitacao, etc).Cada objeto individual possui seu proprio estado de visibilidade ou nao. Mas um objeto ser configurado para estar visivel nao significa que ele vai certamente ser exibido... porque depende da visibilidade do objeto pai (o objeto que esta "acima" na hierarquia) !Vamos a um exemplo mais pratico: imagine uma janela, e dentro dela, um unico botao. Vamos definir esses 2 objetos como visiveis:gtk_widget_show (window);gtk_widget_show (button);Quando o ambiente grafico for efetivamente mostrar essas coisas na tela, os 2 objetos estarao visiveis.Digamos agora que, por algum motivo, queremos esconder o botao do usuario (pra ele nao poder clicar):gtk_widget_hide (button);Isso define que o botao esta agora escondido ("hidden"). Quando o ambiente grafico atualizar a tela, vai aparecer apenas a janela.Vamos religar a exibicao do botao:gtk_widget_show (button);Novamente, janela e botao visiveis na tela.Agora vamos esconder A JANELA:gtk_widget_hide (window);Quando o ambiente grafico atualizar a tela, nao vai mostrar nem a janela, NEM O BOTAO. Ue, mas o botao nao esta configurado para ser mostrado? Sim, mas como o botao poderia ser exibido, se ele esta dentro da janela, e a propria janela nao esta visivel?Entao, resumindo, definir a exibicao ou nao de um certo widget, nao significa que ele vai ou nao vai ser exibido. E preciso levar em consideracao toda a estrutura da interface grafica que voce esta construindo.Antes de terminar esse comando, vejamos o prototipo:void gtk_widget_show (GtkWidget *widget);A funcao nao devolve nada, e espera receber um ponteiro para GtkWidget. Como nossa variavel window e deste tipo, podemos passar ela direto, nenhuma "conversao" necessaria.Ultimo comando, e finalizacao do programa:gtk_main();return 0;A funcao gtk_main() passa o controle do gerenciamento da interface grafica que acabamos de montar e configurar (neste exemplo simples, apenas uma janela vazia) para o ambiente grafico. Este, entao, exibe a interface (a janela) e cuida dos "eventos", ou seja, da interacao que o usuario fizer com ela. Note que podemos minimizar, maximizar, mover, redimensionar a janela, mesmo sem termos escrito nenhuma linha de codigo para tratar dessas questoes. Nao precisamos, porque quem cuida disso e o proprio ambiente grafico. gtk_main(), portanto, geralmente e o ultimo comando do nosso main. Quaisquer outros processamentos que nosso programa for realizar (para tratar as acoes do usuario) devera constar de funcoes, chamadas de "callback functions". Mas isso vai ser papo para outro post.Note que a janela aparece e tals, mas quando clicamos no 'x' para fechar, ela ate fecha, mas o programa continua rodando (o terminal fica "travado"). Isso acontece porque nosso programa nao esta tratando nenhum "evento" gerado pelo usuario. Para finalizar o programa, mesmo com a janela fechada, deveremos teclar control-C no terminal.Fico por aqui. Lembrando que sugestoes e correcoes sao muito bem-vindas. Ate a proxima!Grande abraco!Carlao