使用C语言进行面向对象的开发--GObject入门[2]
轉(zhuǎn)載請注明出處 blog.csdn.net/pingf0 或www.cnblogs.com/pingf“
?
PART 2.
在正式開始GObject的學(xué)習(xí)之前,還要簡單提一下大名鼎鼎的建立在GObject系統(tǒng)之上的桌面圖形庫Gtk,先來個(gè)最簡單的程序看看。
#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;
}
這段代碼的作用其實(shí)就是顯示一個(gè)啥都沒有的窗口。
有些剛接觸gtk的人覺得gtk的函式名總是很長,其實(shí)也是有它的原因的,后面再說。
如果我們將上面代碼中的Gtk,gtk,GTK去掉,似乎會簡明不少。
其實(shí)就是 聲明window(窗口),new一個(gè)window,顯示window 三步,當(dāng)然最后進(jìn)入一個(gè)循環(huán) gtk_main 中。
除了函數(shù)名長了些之外,不難發(fā)現(xiàn)大小寫,下劃線的組合還蠻多的,這也是挺麻煩事情。
下面就這些冗長而又麻煩的事情,簡單加以說明(就是我個(gè)人的理解…….XD),
GTK(不分大小寫)其實(shí)就是表明了這個(gè)函式是gtk庫提供的,它表明的是一個(gè)域,就像System.out.***之類,前面的一堆寫起來也是挺麻煩的一樣。
而大小寫和下劃線的搭配下面舉例來說
GtkWindow 用于對象[構(gòu)件]的聲明
GTK_WINDOW 用于對象類型的轉(zhuǎn)換
gtk_window_*** 用于與對象相關(guān)的函式的聲明
這樣的規(guī)則不是gtk說了算的,而是GType,GObject決定的,轉(zhuǎn)而言之,一般的基于Glib的庫都采用這樣的規(guī)則,比如進(jìn)來很流行的2.5D桌面圖形庫Clutter,里面構(gòu)件的聲明也遵循此規(guī)則。
如果想玩下Clutter,但又不懂linux,可以參考下面這篇博文,在win32上搭建Clutter的開發(fā)環(huán)境。
http://www.cnblogs.com/pingf/archive/2009/10/27/1590419.html
下面簡單說下GObject實(shí)現(xiàn)的一些面向?qū)ο蟮臋C(jī)制(當(dāng)然都是模擬的),
類型機(jī)制,
繼承,
接口,
函式調(diào)用(普通,虛,純虛,當(dāng)然這需要你自己來理解),
類型轉(zhuǎn)化(靜態(tài),動(dòng)態(tài),基礎(chǔ)類型),
類型檢測,
屬性機(jī)制,
信號機(jī)制(signal,closure,accumulator…..)
。。。。。。
有很多東西其實(shí)平時(shí)是用不到滴【其實(shí)是目前我還沒搞明白】,所以下面的代碼集中說明如下一些東西
繼承,
接口,
函式調(diào)用(普通,虛,純虛)
函式(普通的,虛的)
信號機(jī)制(signal)
類型轉(zhuǎn)化(靜態(tài))【動(dòng)態(tài)的簡單看了下,有時(shí)間的話也會寫點(diǎn)……XD】
類型檢測
屬性機(jī)制
?
*未完待續(xù)*
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/pingf/archive/2009/11/20/1606616.html
總結(jié)
以上是生活随笔為你收集整理的使用C语言进行面向对象的开发--GObject入门[2]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: URL、Session、Cookies、
- 下一篇: django 国际化 ugettext(