Fltk1.3系列教程(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Fltk1.3系列教程(1)
原创,转载请注明出处。

Copyright (c) 2011 DingMaotu ()
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是个很好的选择,建议到下载最新的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程序长什么样⼦。

相关文档
最新文档