.Back to life... :-)Vamos estudar detalhadamente o programa "aloumundo" apresentado no post anterior. Tambem veremos alguns detalhes relacionados com a consulta a documentacao da GTK. Por enquanto, estes artigos ainda serao baseados na GTK2, mas tentarei mostrar comparacoes com a nova GTK3, na medida do possivel.Falando em GTK3, algumas observacoes:houve quebra da compatibilidade entre GTK2 e GTK3. Ou seja, nao teremos 100% das coisas que funcionam em GTK2 funcionando diretamente (sem modificacoes) na GTK3;devido a essa quebra de compatibilidade, e possivel instalar no seu sistema as duas bibliotecas separadamente, e usar (na compilacao) conforme o caso. Para instalar a nova GTK3 (para desenvolvimento) e suas dependencias, basta instalar o pacote libgtk-3-dev;ja que estamos no gerenciador de pacotes... vamos instalar tambem devhelp (acesso a documentacao das bibliotecas), libgtk2.0-doc (documentacao offline da biblioteca GTK2), e libgtk3.0-doc (idem... GTK3);para compilar com GTK3, basta alterar o parametro de pkg-config (veja post anterior) para "gtk+-3.0":O programa funciona perfeitamente, a janela e criada e tals... mas note que, diferente do que acontece se compilarmos com GTK2, aparece uma mensagem de erro na execucao:Gtk-Message: Failed to load module "canberra-gtk-module"Para resolver isso, basta instalar o pacote "libcamberra-gtk3-module" e suas dependencias.Mais do que simplesmente resolver um problema tecnico imediato (um erro de compilacao/execucao), o fato acima gera a seguinte reflexao: "sera que, ao instalarmos a biblioteca de desenvolvimento libgtk3-dev, ja nao deveria ser instalada tambem, automaticamente (como dependencia), a biblioteca libcamberra-gtk3-module?" Ou seja, sera que os desenvolvedores/empacotadores da GTK3 "comeram mosca" nessa questao ?Feita esta reflexao, voce pode ter 2 acoes possiveis: reclamar da vida, reclamar dos desenvolvedores, dizer que a coisa ta mal feita, e ficar esperando alguem corrigir... ou ... entrar verdadeiramente no espirito do desenvolvimento colaborativo do software livre, e 1) identificar se isso e realmente um bug e 2) caso seja um bug, contribuir para seu conserto, que vai desde informar esse fato em uma lista de discussao apropriada ou em um sistema de gerenciamento de bugs, ate efetivamente mudar o codigo. Nessa linha de acao, enviei um email para a lista "gnome-love" (especifica para auxilio a novatos) para receber o feedback dos mais experientes sobre o fato. Depois coloco aqui a(s) resposta(s).Segue entao, o programa que iremos analisar:1: #include <gtk/gtk.h>2:3: int main (int argc, char *argv[])4: {5:6: GtkWidget *window;7:8: gtk_init (&argc, &argv);9:10: window = gtk_window_new (GTK_WINDOW_TOPLEVEL);11: gtk_window_set_title (GTK_WINDOW (window), "Alou, mundo!!");12:13: gtk_widget_show (window);14:15: gtk_main ();16: return 0;17:18: }19:Para desenvolver com GTK, precisamos incluir (#include) o arquivo gtk.h. Apesar de gtk ser composta por varias bibliotecas de apoio, nao precisamos indica-las todas, o proprio gtk.h ja faz isso pra gente. Claro que voce precisara indicar outras bibliotecas (nao relacionadas com GTK) que voce quiser usar no seu programa.Vamos entao, nesse programa, criar e apresentar ao usuario uma simples janela. Precisamos entao de uma variavel para ser a referencia desta janela. Criamos entao a variavel window, como um ponteiro para GtkWidget. A explicacao de porque estamos criando esta variavel como ponteiro para GtkWidget, e nao GtkWindow, esta no primeiro post desta serie. Mas para relembrar rapidamente, todo objeto em gtk e construido a partir do objeto basico GtkWidget,