使用C语言进行面向对象的开发--GObject入门[2]

GObject与Gtk基础
本文介绍了GObject系统的基础知识及Gtk桌面图形库的应用。通过一个简单的示例程序展示了如何使用Gtk创建并显示一个窗口,并解释了Gtk函数命名规则及其与GObject的关系。

PART 2.

在正式开始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】

类型检测

属性机制

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值