FLTK

简介编辑

FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/2000和MacOS操作系统平台,相 对于其它的许多图形接口开发工具包(如MFC、GTK、QT等),它具有体积很小、速度比较快,且有着更好的移植性。 [1]
FLTK,如同其名字所表达的:The Fast Light Toolkit,一个轻量级的GUI开发库。但这轻量级并不代表功能的羸弱,相反,FLTK在具有基本的GUI功能之外,还拥有一些特殊的功能,比如跨平台、内置 OpenGL功能、速度更快、尺寸更小、协议宽松等。当然,缺点也是有的,比如对于复杂的界面 构件支持不够,资源支持的不足等。
FLTK 发音为 "fulltick"。
FLTK ,可以在UNIX/Linux (X11),Microsoft Windows和 MacOS X平台运行。

2功能编辑

1. 提供丰富的跨平台的GUI构件(Widget)。有按钮,菜单,窗口等,近六十个。
2. 支持OpenGL,提供Fl_GL_Window,支持OpenGL相关的操作。
3. 提供界面设计工具FLUID,非常方便进行界面的设计。
4. 良好的跨平台移植性。
5. 支持多种C++编译器,Gcc,BC,VC等等。
6. 灵活性。FLTK本身可以定制,以满足不同的需要。这使得FLTK在嵌入式开发上有着极大的竞争力,这正是我要推荐使用FLTK的原因。 [1]

3OPENGL集成编辑

FLTK产生于NeXT环境,发展于 X-window环境,所以对图形加速的支持必然是选择OpenGL。FLTK 使用GlWindow这个类将OpenGL的基本功能囊括其中,只要在GlWindow的draw()里glbegin/glend即可。

4搭建FLTK平台编辑

首先在FLTK官网下载你想要的版本之源码,通常为源码包名称fltk-1.3.0-source.tar.gz。
在window中搭建
在window平台搭建fltk 开发环境的办法之一就是使用MinGW+filk+Code::Blocks
因为我们使用MinGW来编译和安装fltk,使用 Code::Blocks(看起来是一款不错的C/C++ IDE)来使用fltk。
在安装MinGW的时候需注意要勾选C++ 编译器,因为filk是用C++编写的。
在安装完毕MinGW后,启动它(开始>>所有程序>>MinGW>>MinGW shell)
现在下载fltk,并解压,放在合适的地方,比如 d:\fltk\
在MinGW中键入一下命令 (相信用过linux的朋友不会陌生)
cd /d/fltk
./configure --prefix=d:/Program Files/fltk #这里是你希望安装fltk的地方
make #编译
make install #安装

5GUI构件编辑

FLTK的底层只提供一套完整的画点、画线功能,另外附带了字体的显示功能,但FLTK对字体的支持还很粗糙,尤其对于非英文 字符集而言。在基本的点、线功能基础上,FLTK完全自己实现了一套界面,比如Button、Label、Edit、Tab等,全部都是由基本的点线画出。底层之上是一套以Fl_开头的类,代表了各种GUI构件,比如Window、Button、 Input等,使用起来很是容易。所有的界面构件都是画出来的,这些界面类的共同特点是轻量型、都拥有一个draw(),只要在draw()里 实现自己的绘画动作即可。

6事件模型编辑

对于FLTK而言,使用的是最直接的方法:while(1){}。每个界面类都有一个handle(int event),只要继承这个成员函数,就可以在其中处理自己的事务,由于这样的事件方式,造成FLTK的刷新速度很快,事件反应迅速。FLTK的事件采用了最原始的 函数指针方式。
在其他平台搭建
通常使用 CMake工具生成。将源码包解压至一文件夹,如D:\FLTK(此文件夹必须包含CMakeLists.txt文件)。再建立一新文件夹如D:\FLTK-bin。使用CMake将"where is the source code "设置为D:\FLTK,将"where to bulid the binaries"设置为D:\FLTK-bin。点击左下角"configure",成功后点"generate"即生成成功。

7版权编辑

FLTK基于LGPL,对使用者的要求非常宽松: Contrary to popular belief, it can be used in commercial software - even Bill Gates could use it! 所以开发者不需要担心其项目的隐形问题。
转自:百度百科

你可能感兴趣的:(fltk)