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程序长什么样子。

原文地址:https://www.cnblogs.com/leading/p/fltk_1_3_tutorial_1.html