## 1.3FLTK構件簡介
FLTK作為GUI開發包,包含了常用的圖形用戶接口需要的一些構件,視覺表現非常豐富,如下兩圖所示:


常用按鈕構件
| 按鈕名稱 | 頭文件 | 按鈕名稱 | 頭文件 |
| --- | --- | --- | --- |
| Fl_Button | Fl_Button.H | Fl_Check_Button | Fl_Check_Button.H |
| Fl_Light_Button | Fl_Light_Button.H | Fl_Repeat_Button | Fl_Repeat_Button.H |
| Fl_Return_Button | Fl_Return_Button.H | Fl_Round_Button | Fl_Round_Button.H |
對于具有Fl_Check_Button、Fl_Loght_Button和Fl_Round_Button當狀態為off時value() =0 ,On時value()返回1。
處理按鈕時間可以使用回調(callback)函數,參見后面的事件處理。
文本處理構件
| 構件名稱 | 頭文件 | 構件名稱 | 頭文件 |
| --- | --- | --- | --- |
| Fl_Input | Fl_Input.H | Fl_Output | Fl_Output.H |
| Fl_Multiline_Input | Fl_Multiline_Input.H | Fl_Multiline_output | Fl_Multiline_output.H |
設置和取得文本內容使用value();
如:
```
(new Fl_Input(x,y,width,height,"Label"))->value("Hello World!");
```
其他構件參見FLTK.org的 文檔說明。
寫一個簡單的FLTK程序
```
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv)
{
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
```
包含了需要的頭文件后,該程序創建了一個窗口
```
Fl_Window *window = new Fl_Window(300,180);
```
還創建了一個box類,標簽是“Hello World!”
```
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
```
下一步,我們設置了box的類型,大小,字體和標簽的類型
```
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
```
最后,我們顯示該窗口并進入FLTK 事件循環
```
window->end();
window->show(argc, argv);
return Fl::run();
```
運行該程序得到的界面如下,你能直接關閉該窗口退出,也可以按ESC鍵退出

- 第一章:FLTK編程模型
- 1.1FLTK功能簡介
- 1.2搭建FLTK開發環境
- 1.3FLTK構件簡介
- 1.4FLTK事件處理
- 1.5FLTK消息處理
- 1.6OpenGL編程
- 第二章:常用的控件和屬性
- 2.1按鈕
- 2.2文本
- 2.3顏色
- 2.4Box類型
- 第三章:FLTK的畫圖函數
- 3.1何時可以畫圖
- 3.2 FLTK的畫圖函數
- 3.3剪切
- 3.4顏色
- 3.5設置線條的屬性
- 3.6畫一般的圖形函數
- 3.7畫封閉的線,一次連接個頂點
- 3.8畫三邊形或四邊形,并填充內部
- 3.9復雜圖形函數
- 3.10字體
- 3.11覆蓋畫圖函數
- 第四章:在FLTK中自定義控件
- 4.1定制圖形控件說明
- 4.2如何開發一個控件的子類
- 4.3處理事件
- 4.4畫控件