轉自:http://www.ithao123.com/cpluspluslib/0003.html
在C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設計庫來擴充功能要好過設計更多的文法的言論。現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重量級的都有。不少都是讓人眼界大開,亦或是望而生歎的思維傑作。由於庫的數量非常龐大,而且限於筆者水平,其中很多並不瞭解。所以文中所提的一些庫都是比較著名的大型庫。
C++各大有名庫的介紹——GUI
在眾多C++的庫中,GUI部分的庫算是比較繁榮,也比較令人信服的。在實際開發中,GUI庫的選擇也是非常重要的一件事情,下面我們綜述一下可選擇的GUI庫,各自的特點以及相關工具的支援。
1、MFC
大名鼎鼎的微軟基礎類庫(Microsoft Foundation Class)。大凡學過VC++的人都應該知道這個庫。雖然從技術角度講,MFC是不大漂亮的,但是它構建於Windows API 之上,能夠使程式員的工作更容易,編程效率高,減少了大量在建立 Windows 程式時必須編寫的代碼,同時它還提供了所有一般 C++ 編程的優點,例如繼承和封裝。MFC 編寫的程式在各個版本的Windows作業系統上是可移植的,例如,在Windows 3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發展以及官方支援上日漸勢微。
2、QT
參考網站:http://www.trolltech.com
Qt是Trolltech公司的一個多平台的C++圖形化使用者介面應用程式架構。它提供給應用程式開發人員建立藝術級的圖形化使用者介面所需的所用功能。Qt是完全物件導向的很容易擴充,並且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成為全世界範圍內數千種成功的應用程式的基礎。Qt也是流行的Linux案頭環境KDE 的基礎,同時它還支援Windows、Macintosh、Unix/X11等多種平台。
3、WxWindows
參考網站:http://www.wxwindows.org
跨平台的GUI庫。因為其類層次極像MFC,所以有文章介紹從MFC到WxWindows的代碼移植以實現跨平台的功能。通過多年的開發也是一個日趨完善的GUI庫,支援同樣不弱於前面兩個庫。並且是完全開放原始碼的。新近的C++ Builder X的GUI設計器就是基於這個庫的。
4、Fox
參考網站:http://www.fox-toolkit.org/
開放原始碼的GUI庫。作者從自己親身的開發經驗中得出了一個理想的GUI庫應該是什麼樣子的感受出發,從而開始了對這個庫的開發。有興趣的可以嘗試一下。
5、WTL
基於ATL的一個庫。因為使用了大量ATL的輕量級手法,模板等技術,在代碼尺寸,以及速度最佳化方面做得非常到位。主要面向的使用群體是開發COM輕量級供網路下載的可視化控制項的開發人員。
6、GTK
參考網站:http://gtkmm.sourceforge.net/
GTK是一個大名鼎鼎的C的開源GUI庫。在Linux世界中有Gnome這樣的殺手應用。而Qt就是這個庫的C++封裝版本。
1、GTK+
GTK+基礎
GTK+最初是GIMP的專用開發庫,後來發展為Linux下開發圖形介面的應用程式的主流開發工具之一。GTK+2.0是自由軟體,並且是GNU工程的一部分。GTK+2.0的許可協議是LGPL。
GTK+使用C語言開發,但是其設計者使用物件導向技術。 在GNOME平台上提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)綁定,其他的綁定有Ada、 D、 Haskell、PHP和所有的.NET程式設計語言。
與其他很多組件工具箱不同,GTK+並不基於Xt。這一決策優劣互見:優點是GTK+可以應用於其他系統,其靈活性也很強;而缺點就是它無法利用以傳統方法為X11定製的X資源資料庫。
Glade是一個介面設計工具,但是它也包含了一種描述GUI介面的XML語言,它和libglade一起工作就可以直接使用GTK和GNOME控制項。
2、Qt
Qt簡介
Qt是Trolltech公司的一個產品。
Qt是一個多平台的C++圖形化使用者介面應用程式架構。它提供給應用程式開發人員建立藝術級的圖形化使用者介面所需的所用功能。Qt是完全物件導向的很容易擴充,並且 允許真正地組件編程。
自從1996年早些時候,Qt進入商業領域,它已經成為全世界範圍內數千種成功的應用 程式的基礎。Qt也是流行的Linux案頭環境KDE 的基礎,KDE是所有主要的Linux發行版的一個標準組件。
Qt支援下述平台: MS/Windows - 95、98、NT 4.0、ME、和2000
Unix/X11 - Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX和其它很多X11平台
Macintosh - Mac OS X
Embedded - 有幀緩衝(framebuffer)支援的Linux平台。
3、wxWidgets
開源軟體(LGPL),針對C++、Python以及Perl的跨平台工具集。
詳細介紹,參見細述 wxWindows
wxWidget作為一個C++ GUI Library從1992發展到現在,已經在全球範圍內產生了極大的影響力,利用這個類庫進行GUI開發的軟體更是不計其數。
wxWidgets原名wxWindows,是由Julian Smart於1992年還在英國愛丁堡大學人工智慧應用研究所開始的一個項目。Julian Smart現在是Anthemion軟體公司的技術總監。
簡單地說,wxWidgets提供了用於可在多平台上開發GUI應用程式的一整套簡單易學易用的API。wxWidgets支援的多平台包括
Windows 3.1/95/98/NT/2000/XP、帶有Motif
1.2版本以上的Unix、帶有GTK+的Unix/Linux/*BSD、Mac等等。開發人員只需要用自己使用的系統平台的編譯器編譯來源程式,並連結上
相應的庫檔案,產生的程式碼即具有該平台的外觀和介面。在這些GUI之上,wxWidgets還提供了線上協助、網路編程、流處理、多種常用圖形格式支
持、資料庫支援、HTML察看和列印,等等各種強大的功能。
wxWidgets支援的Windows上的多種流行編譯器包括:
Visual C++ 1.5, 4.0, 5.0, 6.0
Borland C++ 4.5, 5.0
Borland C++ Builder 1.0, 3.0
Watcom C++ 10.6 (Win32)
Cygwin
MinGW32
Metrowerks CodeWarrior 4
wxWidgets和GTK+的一大吸引力是它的wxWidgets 2 licence類型是屬於LGPL ( Lesser
General Public License
)的,也就是說,使用它開發的軟體並不要求一定得公開源碼。這樣,無論是免費軟體的開發人員、GPL類型軟體開發人員,還是純粹商業軟體開發人員都可以免費使用
這個軟體包。
相比之下,TrollTech的Qt似乎正是因為此因素而影響了它的受接受程度,因為用Qt開發商用軟體者所需交納的費用對於個人
開發人員來說還是比較昂貴的,而且分單平台、二平台、三平台(即Qt/X11、Qt/Windows和Qt/Mac都包含在內了)三個不同產品包,又分
Professional和Enterprise不同Edition亦即不同價位,而且開發人員數不同價格也不同。
從這點說來,wxWidgets是絕對具有優勢的。另外Qt起源於Linux上的開發,後來推展到Windows、Mac等其它平台;而wxWidgets恰好相反,始於Windows,其後移植到Unix等其它平台。
關於LGPL(Lesser General Public License ) 許可,這是 GNU
許可家族中一個不太嚴格的許可。LGPL 允許任何人使用該庫提供的功能,而不
要求使用者公開應用程式代碼。(這對於許多工業應用來說很重要,因為由於以前的協議或許可,這種場合下一般不希望公開代碼或者公開代碼是顯然不現實的。)使
用 LGPL 許可,您既可以是開放源碼社區的好夥伴也可以是好公民。
中文非正式翻譯參見 http://gnu.freehostingguru.com/lgpl/