Fltk 1.3 系列教程(1)
原創,轉載請注明出處。Copyright (c) 2011
DingMaotu (http://blog.163.com/dingmaotu@126/)
1. 簡介
Fltk是一個輕量級的C++界面庫,庫如其名,全稱是Fast Light Toolkit。Fltk的特點和優勢當然是輕快:體積小,靜態連接,僅提供圖形界面功能。但是它的Widget(或者稱Control,都是指按鈕、文本框等,我這里通稱為“控件”)很豐富,從簡單的按鈕(Button)、輸入框(Fl_Input)一直到集成OpenGL的Fl_Gl_Window,類型頗多。而且自帶Fluid圖形界面設計器,有點像超輕量級的VB6,很方便做小程序。
Fltk的基本思想是通過抽象一個平臺的最基本圖形繪制函數(例如畫點、線、像素Blt等),來實現跨平臺,所有其他的圖形元素都通過這些基本函數自己繪制。因此類似Fltk,Qt、Gtk+等跨平臺界面庫也是如此,都是和現在DirectUI的理念相同的。如果有好的設計師,很容易使用Fltk實現漂亮的界面,但Fltk本身的Widgets是比較難看的,呵呵。
Fltk由于體積小且設計簡單,很多嵌入式開發者都使用這個庫。在這個系列中,我主要講桌面開發(自己沒有搞嵌入式的經驗)。
2. 設計與版本
Fltk的設計并不良好,使用了大量全局變量,命名也難看,但是總體上很實用,而且設計簡單,容易學習。Fltk總共有好幾個版本,其中1.1版是最穩定的,已停止開發,但不支持unicode和國際化,因此處理中文有點困難。1.3是當前開發最積極的,通過utf-8支持了unicode,而且最新版本有專門支持cp936的選項(莫非中國用戶很多?)。前兩天出來了rc7,過幾天就會發布最終版。目前1.3是推薦使用的。2.x版是為了改進原有的設計而設計的,使用了namespace,命名舒服多了,但是相對1.3缺乏很多特性,開發相對不積極,因為1.3后,Fltk3就要開始開發了,要把1和2系列的綜合起來,設計一個新的架構,并且源代碼兼容1和2(Amazing, Huh?)。
3. 評價
Fltk是理想的C++純界面庫,簡單易學,可以在入門C++的時候,學習怎么用C++寫圖形程序。如果是大型程序,我建議還是用Qt好,Qt不僅僅是個界面庫,它包含了各個方面(并行、數據庫、網絡等),而且很專業,完全可以當作一個跨平臺的通用C++庫,就像Java語言有Java平臺支持,C++有Qt支持。Qt除了大一點,那方面都很完美。但是奈何C++標準的編程風格偏向泛型,和Java系有很大不同,所以現在學習的話,還是學習標準庫,使用Boost。Boost不僅體積龐大,而且功能沒有Qt全面,但是前景很好。現在就缺乏一個Boost.UI,我感覺如果Fltk重新設計,符合泛型風格的話,很適合充當boost::ui這個角色。
4. 下載與安裝
在Linux下安裝什么很方便,大多數情況下都有人已經打包好了。即使下載源碼自己編譯,也比較方便,使用通用的configure,make,make install就行了。在Windows下需要自己編譯。如果用Visual Studio,在ide目錄下提供了VC6,VC2008,VC2010的工程文件,打開編譯就行了。但是我使用的是MSYS+MinGW的環境,因此編譯方法和Linux一樣。在源碼包內有詳細的各平臺下載和安裝說明,這里只針對我的環境大概說明一下。
在此建議學習C++不要一開始就使用VC等,而要多熟悉一下命令行。在Windows下,使用MSYS+MinGW是個很好的選擇,建議到nuwen.net下載最新的MinGW編譯器和MSYS環境。那個發行版自帶了很多有用的庫,包括Boost,很適合初學者。這個編譯器的安裝和配置在此不說,請自行解決(或許今后我會寫個相關的教程)。
另外還要選一款好的編輯器,Notepad++是Windows下較好的選擇,否則看很多文本文件都不方便(例如README很多都是Unix格式,普通編輯器不能識別,就不能顯示換行,一團糟)。另外有精力的人可選擇Vim或Emacs,集成到msys里很方便。我這里使用Emacs 24測試版。
首先下載源碼包,解壓到一個目錄里面(我成為FLTK_SRC),然后切換到該目錄:
configure --help
查看選項,例如什么功能要啟用,什么功能要禁止,注意有個支持cp936的選項是默認禁止的,需要的打開,但一般utf-8就足夠了,只要源代碼保存成utf-8格式。然后就是--prefix=安裝目錄,默認是/usr/local/,在msys中就是msys根目錄的local文件夾,因此默認的就挺好了。一般所有自己編譯安裝的都放到這個里面,刪除也容易,千萬不要把這些庫直接裝到MinGW編譯器的根目錄里,混合起來。因為默認的選項就足夠了,所以直接
configure
等執行完畢,那么
make && make install
就會編譯并把必要的文件安裝的/usr/local/,其中/usr/local/bin里有fluid.exe(界面設計器)和fltk-config(編譯時為編譯器提供選項),/usr/local/include/Fl/里是頭文件,/usr/local/lib里是相關的靜態連接庫(Fltk很小,不必要專門編譯成dll),/usr/local/share/doc/examples里是一些示例的源碼。
其實在源碼目錄的test和examples中,都有一些額值得借鑒的例子源碼,其中test中的程序都編譯了,你可以打開test/demo.exe這個程序,看看Fltk程序長什么樣子。

浙公網安備 33010602011771號