1. 程式人生 > >GTK+圖形化應用程式開發學習筆記(二)—Glib庫(1)

GTK+圖形化應用程式開發學習筆記(二)—Glib庫(1)

 在學習GTK+之前我們需要先學習一下 glib的有關知識。因為我們將會在以後的學習中遇到這些知識。由於本筆記不是專門介紹glib的,所以下面的介紹不會太詳細。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

一、什麼是glib

glib庫是linux平臺下最常用的c語言函式庫,它具有很好的可移植性和實用性。glibgtk+庫和gnome的基礎。glib的各種實用程式具有一致的介面。glib為許多標準的、常用的C語言結構提供了相應的替代物。它的編碼風格是半面向物件,識別符號加了一個字首“

g”,這也是一種通行的命名約定。使glib庫的程式都應該包含glib的標頭檔案glib.h。如果程式已經包含了gtk .h則不需要再包含glib.h

二、glib的型別定義

glib的型別定義不是使用C的標準型別,它自己有一套型別系統。它們比常用的C語言的型別更豐富,也更安全可靠。引進這套系統是為了多種原因。

以下是glib基本型別定義:

整數型別:gint8guint8gint16guint16gint32guint32gint64guint64。其中gint88位的整數,guint88位的無符號整數,其他依此類推。這些整數型別能夠保證大小。不是所有的平臺都提供64位整型,如果一個平臺有這些,

glib會定義G_HAVE_GINT64

整數型別gshortglonggintshortlongint完全等價。

布林型別gboolean:它可使程式碼更易讀,因為普通C沒有布林型別。Gboolean可以取兩個值:TRUEFALSE。實際上FALSE定義為0,而TRUE定義為非零值。

字元型gcharchar完全一樣,只是為了保持一致的命名。

浮點型別gfloatgdoublefloatdouble完全等價。

指標gpointer對應於標準Cvoid *,但是比void *更方便。

指標gconst pointer對應於標準Cconst void *(注意,將const void *

定義為const gpointer是行不通的)。

三、glib的巨集

glib除了定義一些在c程式中常見的巨集外,還定義了一些用於型別轉換的巨集。如

GINT_TO_POINTER(p)

GPOINTER_TO_INT(p)

GUINT_TO_POINTER(p)

GPOINTER_TO_UINT(p)

這些巨集允許在一個指標中儲存一個整數,但在一個整數中儲存一個指標是不行的。如果

要實現的話,必須在一個長整型中儲存指標。

例如,我們想把一個int型整數轉換為pointer型數,我們

四、記憶體管理

glib用自己的g_變體包裝了標準的malloc( )free( ),即g_malloc() g_free( )。它們有以下幾個小優點:

g_malloc()總是返回gpointer,而不是char *,所以不必轉換返回值。

如果低層的malloc ( )失敗,g_malloc ( )將退出程式,所以不必檢查返回值是否是NULL

g_malloc() 對於分配0位元組返回NULL

g_free()忽略任何傳遞給它的NULL指標。

1

名稱:

g_malloc

功能

分配記憶體空間

標頭檔案

#include <glib.h>

函式原形

gpointer g_malloc(gulong size);

引數

gulong空間的大小

返回值

指向空間的指標

2

名稱:

g_free

功能

釋放記憶體空間

標頭檔案

#include <glib.h>

函式原形

void g_free(gpointer mem);

引數

mem志向空間的指標

返回值

五、出錯處理函式

3

名稱:

g_strerror

功能:

出錯處理函式

標頭檔案:

#include <glib.h>

函式原形:

gchar *g_strerror(gint errnum);

引數:

errnum給定的錯誤程式碼

返回值:

一條對應於給定錯誤程式碼的錯誤字串資訊

g_strerror返回一條對應於給定錯誤程式碼的錯誤字串資訊,例如“ no such process”等。

 4.

名稱:

g_error

功能:

顯示訊息

標頭檔案:

#include <glib.h>

函式原形:

void g_error(gchar *format,…);

引數:

format出錯資訊

返回值:

g_error 函式顯示應用軟體中的嚴重錯誤。它在錯誤資訊前加上了"** ERROR **",並結束程式的執行。只當可能發生導致程式退出的錯誤才使用這一函式.

5

名稱:

g_warning

功能

顯示訊息

標頭檔案

#include <glib.h>

函式原形

void g_warning(gchar *format,…);

引數

Format出錯資訊

返回值

g_warning當發生可恢復的錯誤而且程式能夠繼續執行時,函式g_warning在錯誤資訊前加上 " ** WARNING ** ",。GTK+用這一函式向程式設計人員顯示已經成功處理了的錯誤。

相關推薦

GTK+圖形應用程式開發學習筆記—窗體

五、回撥函式 由於程式必須能夠對使用者的操作做出相應,在基於GUI的程式設計中訊號是必要的。移動滑鼠,按下按鈕,敲入正文或者關閉視窗,將給應用軟體的回呼函式提供訊號。訊號可能需要應用軟體來加以處理。如:字處理軟體有使字型變黑的按鈕。如果使用者按下了按鈕,就需要呼叫使字型變黑的程式。與此型別,如果使用者關閉了

GTK+圖形應用程式開發學習筆記Glib1

 在學習GTK+之前我們需要先學習一下 glib的有關知識。因為我們將會在以後的學習中遇到這些知識。由於本筆記不是專門介紹glib的,所以下面的介紹不會太詳細。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft

GTK+圖形應用程式開發學習筆記十七—框架構件、比例框架構件

一、框架構件 框架構件(GtkFrame)可以用於在盒子中封裝一個或一組構件,框架本身還可以有一個標籤。標籤的位置和風格可以靈活改變。 我們用gtk_frame_set_label函式建立框架構件。 1. 名稱:: gtk_frame_new 功能: 建立

GTK+圖形應用程式開發學習筆記—分欄列表構建

分欄列表構件(GtkCList)是較常用的構件,它是多列列表構件,可以非常方便的處理數千列的資訊。每一列都可以有一個標題,而且可以是活動的。你還可以將函式繫結到列選擇上。 一、建立分欄列表構件 建立GtkCList構件的方法和建立其他構件的方法是類似的。 1. 名

MakeCode圖形編程語言學習筆記:micro:bit編程練習題[圖]

type 尺寸 計算 err www. 需求 編程 開發 出了 MakeCode圖形化編程語言學習筆記:micro:bit編程練習題[圖]:基礎訓練題:Q1:搖晃micro:bit編程板,隨機出現7個小動物圖標中的一個,並且前後相鄰兩次出現的小動物不重復。註:七個小動物圖標

Java應用程式開發學習之Iterator介面

Iterator是Java中的一個介面: 該介面提供瞭如下方法: 通過前面https://blog.csdn.net/morixinguan/article/details/85006962介面的學習我們已經瞭解到,介面需要一個子類去實現它的方法,而在相關的類中已經實現了對應

Java應用程式開發學習之多型

在Java中,使用關鍵字extends繼承或者關鍵字implements實現,是Java實現多型性的前提。 一、Java多型定義的格式 父類引用指向之類物件稱之為多型,多型的定義格式主要有兩種。 (1)父類名稱 物件名 = new 子類名稱(); (2)介面名稱 物件名 = new

Java應用程式開發學習之介面

一、介面的抽象方法定義: 在任何版本的java中,介面都能定義抽象方法 格式: public abstract 返回值型別 方法名稱(引數列表); 注意事項: 1.介面當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract 2.這兩個關鍵字修飾符,可以選擇性省略

Java應用程式開發學習之繼承

面對物件程式語言有三類特性,分別是封裝性、繼承性以及多型性。 本節就來簡單介紹下Java的繼承。 一、繼承的簡單介紹、特點、規則 繼承是多型的前提,如果沒有繼承,就沒有多型。繼承主要解決的問題是:共性抽取(解決重複程式碼的問題)。 Java繼承知識點裡兩個重要的名詞:父類和子類

Java應用程式開發學習之static關鍵字應用

Java的static關鍵字和C/C++語言的關鍵字有所不同: 一旦在Java裡使用了static關鍵字,那麼這樣的內容不再屬於物件自己,而是屬於類本身的,所以凡是本類的物件,都共享一份。 1、使用Java static關鍵字修飾成員變數 以下是Stundent類。 packag

Java應用程式開發學習之String類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938 Java字串主要有以下特點: 1、字串的內容永不改變 2、由於字串的內容不可改變,所以字串是可以共享使用的,類似於C

Java應用程式開發學習之集合ArrayList類的使用方法

在原來文章介紹了有關Java程式開發的詳細步驟: https://blog.csdn.net/morixinguan/article/details/84956938     這節,來介紹下集合ArrayList的使用方法,回到上一篇文章的,我們一樣跟著腳步來學習使用

Java應用程式開發學習程式編寫步驟詳細解析

最近需要預備APK的開發,由於接觸java不多,久而久之也就忘了,寫個部落格做一下學習備忘。 牢記開發步驟,才能避免以後不會走彎路。 1、開啟JDK APIXXX手冊(這裡以JDK API1.6中文版為例,找Scanner類的使用方法) 2、導包    

微信小程式開發學習筆記

可以把js中的data的資料傳入到wxs中,直接使用就好了。<wxs src="./../tools.wxs" module = "toolJs"/>【可以閉合標籤引入wxs頁面】直接把test.js中的資料當做引數傳到wxs的函式中,呼叫得到boo函式的結果。如:{{toolJs.boo(msg

微信小程式開發學習筆記001--認識微信小程式,第一個微信小程式

第一天,認識微信小程式,第一個微信小程式 1.什麼是微信小程式? 是h5網頁嘛?不是 微信張小龍說: 小程式是一種不需要下載安裝即可使用的應用, 它實現了應用“觸手可及”的夢想,使用者掃一掃或者 搜一下即可開啟應用。也體現了“用完即走”的理念 ,使用者不用關心安裝太多應用的

程式開發 學習筆記-1 邏輯層、檢視層

1、小程式包含一個描述整體程式的 app 和多個描述各自頁面的 page。 2、頁面的.json只能設定 window 相關的配置項,以決定本頁面的視窗表現,所以無需寫 window 這個鍵 邏輯層(App Service) 1、小程式開發框架的邏

IOS開發學習筆記 實現一個簡單的答題器

效果圖:專案地址 專案新增素材,新增plist檔案,並新增plist裡面的字典資料對應的model物件 module標頭檔案: #import <Foundation/Foundation.h> @interface CZQuestion :

通過實際部署應用程式學習Web 3.0:動手實踐IPFS +以太坊

“分散式網路”或“Web 3.0”現因其將給當今行業帶來的革命性變革已儼然成為流行語。但是我們中有多少人真正瞭解Web 3.0呢? 在本文中,我會對Web 3.0的顯著特點進行介紹。在獲得對Web 3.0的基本瞭解之後,我們將一起在IPFS上部署應用程式。該應用程式具有一份Solidit

C#開發學習筆記:向Dev控制元件中的GridControl新增自定義複選框

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Dev控制元件庫自帶的有複選框列,預設是不顯示狀態,如果需要則設定相關

《嵌入式linux應用程式開發完全手冊》NAND FLASH硬體程式設計學習筆記

1.先看一下Flash的引腳圖,它與S3C2440連線比較少(相對nor flash),地址資料和命令都是在如圖示的一些使能訊號的配合下,通過8個I/O引腳傳輸。寫地址,資料,命令時,nCE,nWE訊號