• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 16, 文章 - 0, 評(píng)論 - 55, 引用 - 0
            數(shù)據(jù)加載中……

            FLTK簡(jiǎn)介

              FLTK,如同其名字所表達(dá)的:The Fast Light Tool Kit,一個(gè)輕量級(jí)的GUI開發(fā)庫。但這輕量級(jí)并不代表功能的羸弱,相反,F(xiàn)LTK在具有基本的GUI功能之外,還擁有一些特殊的功能,比如跨平臺(tái)、內(nèi)置 OpenGL功能、速度更快、尺寸更小、協(xié)議寬松等。當(dāng)然,缺點(diǎn)也是有的,比如對(duì)于復(fù)雜的界面構(gòu)件支持不夠,資源支持的不足等。但一個(gè)工具如果使用的好, 取其長而去其短,自然可以飛花摘葉皆可傷人;P

               我選擇FLTK 的過程還是比較曲折的,當(dāng)初做ARM下的GUI開發(fā),選擇的GUI庫是MiniGUI,一個(gè)國內(nèi)開發(fā)的界面庫。當(dāng)時(shí)還支持類unix平臺(tái),對(duì) Windows的支持尚在開發(fā)中。由于需要尋找一些問題的解答,所以經(jīng)常在其論壇上搜索,從而知道了還有microwindow、nano、 qtembedded等嵌入型GUI開發(fā)庫,但當(dāng)時(shí)沒有太過注意。后來又開始轉(zhuǎn)向WINCE平臺(tái)的開發(fā),這一擱就是2年。再后來終于要做跨平臺(tái)的開發(fā),對(duì) 具有跨平臺(tái)的GUI開發(fā)庫開始注意起來。

              一開始的選擇是wxWidgets,但是研究了一段時(shí)間后發(fā)現(xiàn)不好解決的問題越來越多,終于 放棄。最頭疼的就是C++類的事件傳遞,wxWidgets內(nèi)部使用的是一個(gè)類似MFC的方法,所有傳遞事件的類全部要從一個(gè)根類繼承,這樣就導(dǎo)致創(chuàng)建的 類和wxWidgets綁定過甚,復(fù)用性大大降低,同時(shí)由于wxWidgets的目標(biāo)不僅僅是GUI,造成其包含功能過多,其內(nèi)部結(jié)構(gòu)非常復(fù)雜,雖然是 OpenSource,但要若要修改其代碼還是很困難的。綜上所述,wxWidgets并不符合我的要求,從而被排除在外。

              之后研究的QT,老牌的跨平臺(tái)GUI開發(fā)庫,工具很多,開發(fā)也很人性化,qtdesign很像Delphi的界面開發(fā)方式,代碼帶有強(qiáng)烈的linux風(fēng)格,但是看看附帶的庫文件又實(shí)在讓人有些泄氣,尺寸大,發(fā)布麻煩。所以在試用了一段時(shí)間后還是放棄了。

               在此期間,其實(shí)也看到過一些對(duì)FLTK的介紹,但大多數(shù)對(duì)其評(píng)價(jià)不高,也就沒有注意。直到有一次偶然心血來潮,上http: //www.fltk.org看了一下,發(fā)現(xiàn)FLTK 似乎正對(duì)我的胃口,這才開始對(duì)其進(jìn)行了深入的研究。經(jīng)過一段時(shí)間的實(shí)際開發(fā),個(gè)人覺得,對(duì)于跨平臺(tái)和代碼簡(jiǎn)潔而言,F(xiàn)LTK是再適合不過了。

               FLTK的底層只提供一套完整的畫點(diǎn)、畫線功能,另外附帶了字體的顯示功能,但FLTK對(duì)字體的支持還很粗糙,尤其對(duì)于非英文字符集而言,后面我會(huì)詳細(xì) 說明。在基本的點(diǎn)、線功能基礎(chǔ)上,F(xiàn)LTK完全自己實(shí)現(xiàn)了一套界面,比如Button、Label、Edit、Tab等,全部都是由基本的點(diǎn)線畫出。看到 這,可能你會(huì)覺得這實(shí)在是屬于自己造輪子,吃力不討好。誠然,如果你只針對(duì)一種平臺(tái)開發(fā),這樣的做法不能帶來多少好處,還造成學(xué)習(xí)時(shí)間的拉長。但若要針對(duì) 多個(gè)平臺(tái)開發(fā),這樣做的好處就很明顯了。首先是移植容易,只要針對(duì)目標(biāo)平臺(tái)實(shí)現(xiàn)基本的點(diǎn)線功能就可以實(shí)現(xiàn)代碼的移植,這可能是所有跨平臺(tái)GUI庫中最方便 最直接的方案,目前FTLK支持MacOS、Windows、Linux(x-window)等平臺(tái),針對(duì)WinCE(主要是unicode的問題)和 plam 的開發(fā)正在進(jìn)行中。其次是保持了界面的一致性,雖然QT、GTK等開發(fā)庫也具有這種功能,但是他們都需要一套基本庫的支持,無法做到系統(tǒng)尺寸的優(yōu)化,而對(duì) 于FLTK而言,這卻恰恰是他的優(yōu)點(diǎn)和長項(xiàng)。最后是代碼層次清楚、結(jié)構(gòu)簡(jiǎn)單,由于大部分的工作就是基于底層的點(diǎn)線功能進(jìn)行自繪,所有很多代碼都是簡(jiǎn)潔明 了,很少費(fèi)話。

              底層之上是一套以Fl_開頭的類,代表了各種GUI構(gòu)件,比如Fl_Window、Fl_Button、 Fl_Input等,使用起來很是容易。同時(shí)由于上面所說的,所有的界面構(gòu)件都是畫出來的,因此在熟悉了這種方式后,生成自己的構(gòu)件也是很容易的,反正是 畫界面嘛,既然別人能做到,你也能做到,實(shí)在不行可以查閱源代碼進(jìn)行學(xué)習(xí)。這些界面類的共同特點(diǎn)是輕量型、都擁有一個(gè)draw(),只要在draw()里 實(shí)現(xiàn)自己的繪畫動(dòng)作即可。

              說到界面就不能不說其事件實(shí)現(xiàn)方式,對(duì)于FLTK而言,使用的是最直接的方法:while(1){}。這也 是很多人批評(píng)FLTK原始的一個(gè)原因。但仔細(xì)想想,其實(shí)這是最直接的辦法,不管是哪種平臺(tái),最終的事件方案不外乎是死循環(huán)和中斷,中斷的確具有很多好處, 但只要while(1)能完成這部分的功能,那又有什么關(guān)系呢。每個(gè)界面類都有一個(gè)handle(int event),只要繼承這個(gè)成員函數(shù),就可以在其中處理自己的事務(wù)。是不是很簡(jiǎn)單?同時(shí)由于這樣的事件方式,造成FLTK的刷新速度很快,事件反應(yīng)迅速, 也算是個(gè)附帶優(yōu)點(diǎn)了。現(xiàn)在大多數(shù)的開發(fā)庫都是采用OO方式的事件處理方式,但FLTK卻采用了最原始的函數(shù)指針方式,也算是一個(gè)異類,這可能和FLTK的 unix背景有關(guān),無論如何,這種方式還是需要一定的適應(yīng)時(shí)間的,而且這種方式的優(yōu)缺點(diǎn)也是屬于各花入各眼了,不過我本人還是很喜歡這種方式的,誰叫我比 較原始呢#-_-

              FLTK產(chǎn)生于NeXT環(huán)境,發(fā)展于X-window環(huán)境,所以對(duì)圖形加速的支持必然是選擇OpenGL。FLTK 使用Fl_Gl_Window這個(gè)類將OpenGL的基本功能囊括其中,只要在Fl_Gl_Window的draw()里glbegin/glend即 可,基本的設(shè)置工作FLTK全都做好了,對(duì)于我現(xiàn)在的系統(tǒng)要求簡(jiǎn)直是最適合不過了。

              FLTK基于LGPL,對(duì)使用者的要求非常寬松: Contrary to popular belief, it can be used in commercial software - even Bill Gates could use it! 所以開發(fā)者不需要擔(dān)心其項(xiàng)目的隱形問題。但是如果對(duì)FLTK進(jìn)行了卓有成效的修正最好還是能回饋給開發(fā)組,所謂我為人人,人人為我嘛。

               說了一堆的好話,現(xiàn)在開始談?wù)凢LTK的缺點(diǎn)。首先一條就是對(duì)非英文字體特別是中文的支持比較差,甚至是非常差。在Windows平臺(tái)下還好一點(diǎn),因?yàn)? 在 Windows平臺(tái)下使用的是TextOut函數(shù)輸出字符串,但是在X-Window環(huán)境下就完蛋了,無法正確顯示中文,也不能調(diào)用輸入法進(jìn)行輸入。從這 點(diǎn)來說,F(xiàn)LTK還是只適合一些封閉軟件的開發(fā),對(duì)于通用軟件而言FLTK并非是一個(gè)好的選擇。但只能在Windows平臺(tái)下開發(fā)中文軟件也不是個(gè)辦法, 要解決中文的顯示問題也不難,目前FTLK的穩(wěn)定版是1.1.7,開發(fā)版是2.0,有人針對(duì)1.xx版本修改了一個(gè)unicode版本,可以很平滑的支持 漢字的顯示,但很遺憾,我沒有編譯成功過,如果誰編譯成功了可以給我來個(gè)信。2.0已經(jīng)對(duì)非英文的支持進(jìn)行了專門的開發(fā),但目前還沒有release,在 不久的將來應(yīng)該可以完整的解決這個(gè)問題。目前,要么等待,要么就像我這樣,用點(diǎn)陣字庫瞞天過海。具體方法因?yàn)檫€不夠成熟,就不公布了。

              無論如何,F(xiàn)LTK的目標(biāo)還是針對(duì)嵌入式和封閉軟件的開發(fā),所以復(fù)雜的界面并非其長項(xiàng),如果想做出花哨復(fù)雜的界面,還是用其他GUI庫比較好,F(xiàn)LTK并不適合。

              綜上所述,F(xiàn)LTK的優(yōu)點(diǎn)和缺點(diǎn)都是非常的突出,如何取舍還是自己決定吧。



            2006-04-16 22:02

            posted on 2006-04-16 22:11 cyantree 閱讀(20550) 評(píng)論(20)  編輯 收藏 引用

            評(píng)論

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我也好中意FLTK的事件綁定
            簡(jiǎn)單明了,比一堆宏好多了
            2006-04-20 22:56 | shephard

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我現(xiàn)在正在用FLNX做一些開發(fā),不知能否與你交流一下.
            MSN:wytianyi@hotmail.com
            2006-04-24 12:26 | wytianyi

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我正在做fltk的開發(fā),不知道是否可以交流一下
            qizhijuncc@126.com
            2006-04-24 18:48 | wunai

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我現(xiàn)在用的是1.17的fltk,中文顯示基本正常。整體使用感覺相當(dāng)不錯(cuò)!
            gastonfeng@126.com
            2006-06-22 21:37 | 凱控科技

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            cyantree 能不能建立一個(gè)fltk的群呢,大家可以在一起討論呀
            2006-07-02 14:46 | minifang

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            cyantree:你好!
            看了你的很多文章,深受啟發(fā)
            我現(xiàn)在遇到一個(gè)問題,想請(qǐng)教你
            就是如何提高jffs2 的掛載速度
            不知道你有沒有遇到過這個(gè)問題
            我的qq是:34960149
            msn:kuanrong0305@sina.com
            2006-07-04 10:16 | minifang

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            只是中文支持還是比較重要的吧!
            如果中文支持的不好至少通用還是個(gè)問題。
            我們有個(gè)項(xiàng)目就是國際化都搞了好長時(shí)間!暈
            2006-09-30 17:18 | sword.ch

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            這個(gè)callback作為windows事件綁定沒有什么新鮮的啊. 98年左右C++教材就有深入介紹. 不信查cohoon的文章或書
            2006-12-25 12:56 | nothing new

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            希望能跟學(xué)習(xí)fltk的朋友交流。QQ33571922
            2007-04-06 09:38 | fltk

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            兩年前我就是使用FLTK+nxlib+nano-X來實(shí)在手機(jī)界面. 我覺得沒有錢的前提下這是最好的套件!!!
            2007-05-10 15:59 | wlsloi

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            @wlsloi
            我現(xiàn)在也要用FLTK+nxlib+nano-X 來實(shí)現(xiàn)PDA界面,我剛開始做,wlsloi
            , 能否把你的經(jīng)驗(yàn)共享,我的MSN:weifang210@hotmail.com
            2007-07-02 16:08 | weifnag

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我也是做fltk開發(fā),有時(shí)間可以交流交流~ QQ:34026954
            2007-08-10 16:52 | qlg

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            @wlsloi
            您好,可以交流一下嗎?
            skype:embedcenter
            2007-11-12 08:48 | unitepower

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            可以請(qǐng)教一下嗎
            skype:anngames
            2008-03-26 11:13 | ANN

            # re: FLTK簡(jiǎn)介[未登錄]  回復(fù)  更多評(píng)論   

            一直從事嵌入式的開發(fā),對(duì)gui比較感興趣:

            li_qing_song@hotmail.com

            希望交流一下這方面的心得。
            2008-06-02 22:09 | 李青松

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            既然fltk的底層都是畫點(diǎn)
            那把漢字理解為圖片不就行了 自己做個(gè)函數(shù)來畫漢字就是了
            點(diǎn)陣字庫如hzk16還是蠻有用的
            但輸入就沒轍了 不過可以參考有人用js做的在線拼音輸入法
            2008-08-14 16:47 | 山越野人

            # re: FLTK簡(jiǎn)介[未登錄]  回復(fù)  更多評(píng)論   

            2.x對(duì)中文支持很好的。
            源碼使用UTF-8,GCC編譯器,中文顯示正常,輸入也正常。
            2009-05-26 20:24 | Loaden

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            不錯(cuò)的文章!

            分享我制作的免費(fèi)FLTK電子書:
            <a href="http://www.heronote.com/files/FLTK.htm">http://www.heronote.com/files/FLTK.htm</a>
            2011-07-11 17:18 | heronote

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            您好,請(qǐng)教一下,就是我現(xiàn)在用fltk做界面開發(fā)遇到個(gè)很麻煩的問題,就是有幾個(gè)界面從一個(gè)界面到另一個(gè)界面頁面刷新有問題,控件顯示不出來,要用手在觸摸屏上不停的點(diǎn)點(diǎn)點(diǎn)才會(huì)慢慢出來,有的還出不來。
            2012-07-16 11:36 | linna

            # re: FLTK簡(jiǎn)介  回復(fù)  更多評(píng)論   

            我們建一個(gè)群吧,聊聊fltk.
            加我qq 896757335
            我們有個(gè)項(xiàng)目想找人做。fltk的

            2016-08-02 10:15 | 藍(lán)

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久人人青草97香蕉| 久久综合精品国产一区二区三区| 久久精品中文字幕一区| 久久婷婷五月综合国产尤物app| 91精品国产综合久久久久久| 久久精品国产色蜜蜜麻豆| 99久久免费国产精品特黄| 精品国产乱码久久久久久郑州公司 | 日韩人妻无码精品久久久不卡 | 久久亚洲国产欧洲精品一 | 色综合久久综合中文综合网| 97久久精品无码一区二区| 亚洲国产成人精品无码久久久久久综合| 久久婷婷人人澡人人爽人人爱 | 久久精品国产一区二区三区| 人妻丰满AV无码久久不卡| 久久久这里有精品中文字幕| 99国产精品久久| 久久天天躁狠狠躁夜夜躁2O2O| 久久夜色精品国产www| 久久免费视频观看| 麻豆一区二区99久久久久| 久久久久亚洲av毛片大| 久久香蕉国产线看观看乱码| 国产精品99久久免费观看| 精品国产乱码久久久久久呢| 久久久精品国产Sm最大网站| 2020最新久久久视精品爱| 久久久久久久综合日本亚洲| 国产精品美女久久久m| 97久久综合精品久久久综合| 日韩av无码久久精品免费| 亚洲午夜久久久久久久久电影网 | 香港aa三级久久三级老师2021国产三级精品三级在 | 久久人人爽人人爽人人片AV高清| 久久精品夜色噜噜亚洲A∨| 久久久久夜夜夜精品国产| 一本色道久久88加勒比—综合| 精品亚洲综合久久中文字幕| 嫩草影院久久99| 久久国产午夜精品一区二区三区|