GTK+的第一个应用Hello,World

转载请注明本文出处: http://www.cnblogs.com/build/archive/2010/12/03/gtk-hello-world-1.html

在Fedora上搭建好开发环境之后,接下来就应该是一个Hello World,用GTK来和这个世界打个招呼。

在Eclipse中新建一个C Project,然后添加一个helloword.c

 

 1 #include < gtk/gtk.h >
 2 int main (int argc, char *argv[])
 3 {
 4   GtkWidget *window;
 5   /* 初始化 GTK+ 和所有类. */
 6   gtk_init (&argc, &argv);
 7   /* 创建一个新窗口, 设定一个标题,并展示出来. */
 8   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
 9   gtk_window_set_title (GTK_WINDOW (window), "Hello World");
10   gtk_widget_show (window);
11   /* 通过主循环处理 */
12   gtk_main ();
13   return 0;
14 }

保存,然后编译(Ctrl+B),如果发生 to generate dependencies you must specify either -M or -MM 错误,请参看其中的解决方法

最后运行,会看到一个标题栏是Hello World的空白窗口。这个时候,虽然在窗口的右上角有一个关闭的图标,但这个图标却无法正确的关闭应用程序,可以在eclipse的状态看出来

 

只有在按下这个红色的停止按钮之后,应用程序才会真正的退出来。

gtk_init() 

通过调用gtk_init(),可以搞定所有的初始化工作,当然了,这个东西也是可以自己定制的(开源的么),后文会介绍。

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

生成一个我们需要的实例,GtkWidget* gtk_window_new (GtkWindowType type),很明显一个工厂模式,GtkWindowType是继承于GtkWidget的。稍后会研究一下每个对象的继承关系。

gtk_window_set_title (GTK_WINDOW (window), "Hello World");

gtk_widget_show (window);

这两句就是设置窗口的一些属性,并展示出来。

gtk_main ();

这个函数是一个循环,这个循环的作用是通过处理一些消息来对应用程序进行相应的处理,这就里就解释了,为什么关闭窗口后,程序并没有真正的推出,因为关闭窗口的消息之杂Xserver层处理了,而在应用层面却没有任何处理,所以,我们只看到了窗口消失,而程序却依然运行

后面我们会看看GTK是如何处理消息和事件的。

 

 

posted @ 2010-12-03 14:51  e_hong  阅读(728)  评论(0编辑  收藏  举报