当前位置:主页   - 电脑 - 程序设计 - C/C++
使用C语言进行面向对象的开发--GObject入门[2]
来源:网络   作者:平繁   更新时间:2011-09-23
收藏此页】    【字号    】    【打印】    【关闭

  在正式开始GObject的学习之前,还要简单提一下大名鼎鼎的建立在GObject系统之上的桌面图形库Gtk,先来个最简单的程序看看。

#include <gtk/gtk.h>
 
int main( int argc, char *argv[])
{
GtkWidget *window;
 
gtk_init(&argc, &argv);
 
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
 
gtk_main();
 
return 0;
}

  这段代码的作用其实就是显示一个啥都没有的窗口。

  有些刚接触gtk的人觉得gtk的函式名总是很长,其实也是有它的原因的,后面再说。

  如果我们将上面代码中的Gtk,gtk,GTK去掉,似乎会简明不少。

  其实就是 声明window(窗口),new一个window,显示window 三步,当然最后进入一个循环 gtk_main 中。

  除了函数名长了些之外,不难发现大小写,下划线的组合还蛮多的,这也是挺麻烦事情。

  下面就这些冗长而又麻烦的事情,简单加以说明(就是我个人的理解…….XD),

  GTK(不分大小写)其实就是表明了这个函式是gtk库提供的,它表明的是一个域,就像System.out.***之类,前面的一堆写起来也是挺麻烦的一样。

  而大小写和下划线的搭配下面举例来说

  GtkWindow 用于对象[构件]的声明

  GTK_WINDOW 用于对象类型的转换

  gtk_window_*** 用于与对象相关的函式的声明

  这样的规则不是gtk说了算的,而是GType,GObject决定的,转而言之,一般的基于Glib的库都采用这样的规则,比如进来很流行的2.5D桌面图形库Clutter,里面构件的声明也遵循此规则。

  如果想玩下Clutter,但又不懂linux,可以参考下面这篇博文,在win32上搭建Clutter的开发环境。

  http://www.cnblogs.com/pingf/archive/2009/10/27/1590419.html

  下面简单说下GObject实现的一些面向对象的机制(当然都是模拟的),

  类型机制,

  继承,

  接口,

  函式调用(普通,虚,纯虚,当然这需要你自己来理解),

  类型转化(静态,动态,基础类型),

  类型检测,

  属性机制,

  信号机制(signal,closure,accumulator…..)

  有很多东西其实平时是用不到滴【其实是目前我还没搞明白】,所以下面的代码集中说明如下一些东西

  继承,

  接口,

  函式调用(普通,虚,纯虚)

  函式(普通的,虚的)

  信号机制(signal)

  类型转化(静态)【动态的简单看了下,有时间的话也会写点……XD】

  类型检测

  属性机制

  出处:http://www.cnblogs.com/pingf/

编缉推荐阅读以下文章

  • 使用C语言进行面向对象的开发--GObject入门[5]
  • 使用C语言进行面向对象的开发--GObject入门[4]
  • 使用C语言进行面向对象的开发--GObject入门[3]
  • 使用C语言进行面向对象的开发--GObject入门[1]
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明