zoukankan      html  css  js  c++  java
  • 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程序长什么样子。

  • 相关阅读:
    poj 3666 Making the Grade
    poj 3186 Treats for the Cows (区间dp)
    hdu 1074 Doing Homework(状压)
    CodeForces 489C Given Length and Sum of Digits...
    CodeForces 163A Substring and Subsequence
    CodeForces 366C Dima and Salad
    CodeForces 180C Letter
    CodeForces
    hdu 2859 Phalanx
    socket接收大数据流
  • 原文地址:https://www.cnblogs.com/leading/p/fltk_1_3_tutorial_1.html
Copyright © 2011-2022 走看看