这两天在看FLTK的东西,主要是自己用着的windows系统突然罢工了,不得已转到ubuntu中,还好这个还用得了。上不了网,找资料不方便,看到以前的硬盘下了FLTK,就拿来看看。刚巧自己希望用个跨平台的东西做界面,学习之后,觉得FLTK确实挺小巧的。而且也比较容易上手。
按照其README安装完后,在test目录下有个help,可以查看其文档,介绍的比较详细,做GUI主要是一些控件,以及其Event及对应的 响应,大概游览一下其手册即可。知道大概有哪些东西,看下其include,则可以看到其命名规则均为Fl_Window,Fl_Double_Window,Fl_Gl_Window,Fl_Button等,到时具体要用时则查手册吧。有个方便之处 是可以用fluid来做界面。具体的使用参见 --help, 如fluid -c *.fl,生成对应的.cxx,.h 文件,然后用 fltk-config --help查看具体要用哪些参数,你可以注意到的是当输入这个命令后,其下面会有命令的完整显示。这个在多个 文件时则用fltk-config不管用了,这时唯有自已输入一长串命令了。比如:g++ -mwindows -DWIN32 -O2 -pipe -o main main.cxx View.cxx ui.cxx -mwindows /usr/lib/libfltk_gl.a -lglu32 -lopengl32 /usr/lib/libfltk.a -lole32 -luuid -lcomctl32 -lwsock32
但是,一般很多程序不是一次编译就过的,有时要修改,修改完后再编译,但是,难道还要再输入上面一长串吗。后来我想了一个办法。就是重定向上面的命令行到一个文件,一般在一个工程文件夹中有一个cmdline.txt的文件,用于记录输入命令。然后写一个叫file2cmd.c的程序,如下:
#include <stdlib.h>
#include <stdio.h>
//#include <char.h>
void usage()
{
printf("usage: file2cmd file.txt");
return;
}
int main(int argc,char** argv)
{
if(argc != 2)
usage();
else
{
FILE * fp = fopen(argv[1],"r");
if(fp == NULL)
{
usage();
}
char cmdline[200];
fgets(cmdline,200,fp);
printf("%s",cmdline);
system(cmdline);
}
return 0;
}
编译后,将可执行程序file2cmd放到/usr/local/bin下,以后在要编译整个工程的时候则有如下简便的方法了:
touch cmdline.txt ; echo "a long cmd line" > cmdline.txt
file2cmd cmdline.txt
这样,就可以不用每次都输入一长串命令。
还有一个方法是自己修改fltk-config的 shell文件,加上自己的参数。不过我在查看的时候,不知道如何在里面修改如何添加多个.cxx文件的方法。
希望自己以后可以在其他的地方找到。如果哪位大侠知道方法,请告知如何做。
=========
2009-1-8
以下这个截图是近期的截图,界面部分是用FLTK来做的.也算是对FLTK学习的一个总结,其实觉得FLTK写界面还是挺方便的,就是到后面可能不大容易管理,觉得代码有点乱,虽然都是用fluid生成的,但是最后另外建一个class来控制整个程序的callback,因为那样的话,对界面修改后生成的代码与相应的响应代码是分开的,互不影响,实际上,近期在学习Qt的过程中,发现python+PyQt的一些教程中鼓励的也是这种方法.