遇到了FLTK

来源:互联网 发布:电脑 英文 输入法 软件 编辑:程序博客网 时间:2024/05/17 09:36

今天正在考虑着如何实现神州数码客户端的跨平台开发问题

1.认证过程的实现

说白了就是截包,分析,发包了,这个功能因为是使用的pcap,他本身就是个跨平台的库,所以没有什么大问题

2.程序参数配置

参数配置有两方面,一方面是从文件中读取的用户上一次的配置信息,一方面是其他信息的即时获取

前者还相对好办,后者涉及到mac地址的获取,这个功能在pcap中没有提供,也没有现成的跨平台代码可用,只有自己思考了,最后决定使用arp协议,解析自己的ip地址,得到mac地址 

3.人机交互界面

没办法,只能使用跨平台的GUI库了,最先想到的是QT或者GTK+

试着用devC++的更新功能,下载了GTK+的包回来,搞了半天,没有任何进展

然后再看看GTK+的评价,它在linux下确实是个不错的库,但是对windows的支持似乎不怎么样,程序还会时不时的崩溃什么的,看着看着,我的心可就凉了

继续找,在一个介绍跨平台GUI开发的页面上看到了FLTK

FLTK是The Fast Light Tool Kit的缩写,一个轻量级的GUI开发库,下载回来,一共才1.5M

官方网站上已经放出了2.x版本的,加入了对unicode字符的支持

希望以前中文显示的问题在新版中可以改善

以下是对FLTK的一点介绍

摘自:http://www.heybrain.com/article/19.html

  FLTK的底层只提供一套完整的画点、画线功能,另外附带了字体的显示功能,但FLTK对字体的支持还很粗糙,尤其对于非英文字符集而言,后面我会详细说明。在基本的点、线功能基础上,FLTK完全自己实现了一套界面,比如Button、Label、Edit、Tab等,全部都是由基本的点线画出。看到这,可能你会觉得这实在是属于自己造轮子,吃力不讨好。诚然,如果你只针对一种平台开发,这样的做法不能带来多少好处,还造成学习时间的拉长。但若要针对多个平台开发,这样做的好处就很明显了。首先是移植容易,只要针对目标平台实现基本的点线功能就可以实现代码的移植,这可能是所有跨平台GUI库中最方便最直接的方案,目前FTLK支持MacOS、Windows、Linux(x-window)等平台,针对WinCE(主要是unicode的问题)和plam 的开发正在进行中。其次是保持了界面的一致性,虽然QT、GTK等开发库也具有这种功能,但是他们都需要一套基本库的支持,无法做到系统尺寸的优化,而对于FLTK而言,这却恰恰是他的优点和长项。最后是代码层次清楚、结构简单,由于大部分的工作就是基于底层的点线功能进行自绘,所有很多代码都是简洁明了,很少费话。

  底层之上是一套以Fl_开头的类,代表了各种GUI构件,比如Fl_Window、Fl_Button、 Fl_Input等,使用起来很是容易。同时由于上面所说的,所有的界面构件都是画出来的,因此在熟悉了这种方式后,生成自己的构件也是很容易的,反正是画界面嘛,既然别人能做到,你也能做到,实在不行可以查阅源代码进行学习。这些界面类的共同特点是轻量型、都拥有一个draw(),只要在draw()里实现自己的绘画动作即可。

  说到界面就不能不说其事件实现方式,对于FLTK而言,使用的是最直接的方法:while(1){}。这也是很多人批评FLTK原始的一个原因。但仔细想想,其实这是最直接的办法,不管是哪种平台,最终的事件方案不外乎是死循环和中断,中断的确具有很多好处,但只要while(1)能完成这部分的功能,那又有什么关系呢。每个界面类都有一个handle(int event),只要继承这个成员函数,就可以在其中处理自己的事务。是不是很简单?同时由于这样的事件方式,造成FLTK的刷新速度很快,事件反应迅速,也算是个附带优点了。现在大多数的开发库都是采用OO方式的事件处理方式,但FLTK却采用了最原始的函数指针方式,也算是一个异类,这可能和FLTK的 unix背景有关,无论如何,这种方式还是需要一定的适应时间的,而且这种方式的优缺点也是属于各花入各眼了,不过我本人还是很喜欢这种方式的,谁叫我比较原始呢#-_-

  FLTK产生于NeXT环境,发展于X-window环境,所以对图形加速的支持必然是选择OpenGL。FLTK使用Fl_Gl_Window这个类将OpenGL的基本功能囊括其中,只要在Fl_Gl_Window的draw()里glbegin/glend即可,基本的设置工作FLTK全都做好了,对于我现在的系统要求简直是最适合不过了。

  FLTK基于LGPL,对使用者的要求非常宽松:Contrary to popular belief, it can be used in commercial software - even Bill Gates could use it! 所以开发者不需要担心其项目的隐形问题。但是如果对FLTK进行了卓有成效的修正最好还是能回馈给开发组,所谓我为人人,人人为我嘛。

哈哈,就是他了

好好研究,

原创粉丝点击