上一篇我們說明了 RTGUI 是如何透過 C 實現物件導向的設計邏輯,這篇將會說明在 RTGUI 中的最小物件 "widget" 是如何創建、運行及刪除的。
結構
記錄包含他的 widget、所在的 window、一些屬性等
四方形結構體
對角線 (x1,y1)、(x2,y2)
定義物件類型
功能 |
回傳值 |
建立 widget |
widget 指標 |
*widget_type |
欲建立的 widget 種類 |
呼叫 rtgui_object_create
,型態為 widget 完成,並透過 RTGUI_WIDGET
檢查正確性
一樣透過 rtgui_object_destroy
來完成
RTT GUI 提供一些 API 給使用者去設定 widget 的樣式與行為
大小
功能 |
回傳值 |
設定 widget 的大小 |
void |
*widget |
x |
y |
width |
height |
欲設定的 widget |
起始座標 x |
y |
寬度 |
高度 |
填入正確的 (x1,y1)、(x2,y2)
Parent
功能 |
回傳值 |
設定 widget 的上層元素 |
void |
*widget |
parent |
欲設定的 widget |
上層元素 (widget) |
大小下界
功能 |
回傳值 |
設定 widget 的大小下界 |
void |
*widget |
width |
height |
欲設定的 widget |
寬度 |
高度 |
寬度下界
功能 |
回傳值 |
設定 widget 的寬度下界 |
void |
*widget |
width |
欲設定的 widget |
寬度 |
高度下界
功能 |
回傳值 |
設定 widget 的高度下界 |
void |
*widget |
height |
欲設定的 widget |
高度 |
邊框風格
功能 |
回傳值 |
設定 widget 的邊框風格 |
void |
*widget |
style |
欲設定的 widget |
風格 |
Focus 函式
功能 |
回傳值 |
設定 widget 的 focus func |
void |
*widget |
handler |
欲設定的 widget |
focus func |
Unfocus 函式
功能 |
回傳值 |
設定 widget 的 unfocus func |
void |
*widget |
handler |
欲設定的 widget |
focus func |
這裡是用指標函數的方式將行為函式填入結構中,要使用時可直接呼叫結構中的元素使用。
上一節整理了設定 widget 的風格,接下來整理 widget 的行為
移動到相對位置
功能 |
回傳值 |
移動 widget 到相對位置 |
void |
*widget |
dx |
dy |
欲移動的 widget |
位移量 x |
y |
*widget |
dx |
dy |
欲移動的 widget |
位移量 x |
y |
*widget |
欲 unfocus 的 widget |
點向上位移
*widget |
*point |
目標 widget |
目標點 |
點向下位移
*widget |
*point |
目標 widget |
目標點 |
矩形向上位移
*widget |
*rect |
目標 widget |
目標矩形 |
矩形向下位移
*widget |
*rect |
目標 widget |
目標矩形 |
更新重疊區域
最後整理一些取得 widget 資訊的 API
Top Level
功能 |
回傳值 |
取得 top level |
所在 window |
上層前景
上層背景
下一個兄弟
上一個兄弟