wxWidgets跨平臺(tái) GUI 框架
wxWidgets是一個(gè)開(kāi)源的跨平臺(tái)的C++構(gòu)架庫(kù)(framework),它可以提供 GUI(圖形用戶(hù)界面)和其它工具。支持所有版本的Windows、帶GTK+或Motif的Unix和MacOS。
wxWidgets在最開(kāi)始是由愛(ài)丁堡(Edinburgh)大學(xué)的人工智能應(yīng)用學(xué)院開(kāi)發(fā)的,主要是內(nèi)部使用,而在1992年第一次公布。 并且由Julian Smart, Robert Roebling, Vadim Zeitlin, Vaclav Slavik和更多其他的人所編寫(xiě)和維護(hù)。
wxWidgets的主體是由C++構(gòu)建的,但你并不是必需通過(guò)C++才能使用wxWidgets.wxWidgets擁有許多其它語(yǔ)言的綁定(binding),使你在用其它語(yǔ)言編寫(xiě)程序的時(shí)候也可以使用wxWidgets.
wxwidgets是一個(gè) c++編寫(xiě)的用來(lái)提供gui開(kāi)發(fā)的框架。它包含一個(gè)可以支持現(xiàn)今幾乎所有操作系統(tǒng)(Version 2 currently supports all desktop versions of MS Windows, Unix with GTK+, Unix with Motif, and MacOS. An OS/2 port is in progress.)的GUI庫(kù)和其他一些很有用的工具,提供了類(lèi)似MFC的功能。而且,特別要說(shuō)一下,這個(gè)c++lib還的新版本還提供了對(duì)掌上電腦的 支持。當(dāng)然,說(shuō)到這里很多人會(huì)想到j(luò)ava隊(duì)多系統(tǒng)的支持,其實(shí)這是不一樣的,java的跨平臺(tái)是建立在“中間代碼”的基礎(chǔ)上的,就是說(shuō)需要在目標(biāo)平臺(tái)上 安裝java解釋器;但是wxwidgets是c++庫(kù),經(jīng)過(guò)編譯后,他提供的是native級(jí)的機(jī)器碼,在gui編程方面,這可是意味著很大的不同!
那么wxwidgets有什么特別之處呢?比起其他的跨平臺(tái)gui庫(kù),有什么好處呢?
1、(不得不放在第一位的)就是他無(wú)論對(duì)于個(gè)人還是對(duì)于商業(yè)應(yīng)用都[font color=#ff0000]免費(fèi)[/font]!
——它的主體框架的授權(quán)協(xié)議支持商業(yè)免費(fèi)應(yīng)用,其外圍功能庫(kù)中很多也是lgpl授權(quán)的,這無(wú)疑對(duì)于我等“0資本”的人來(lái)說(shuō)是天大的好事。不同于gt之類(lèi)的跨平臺(tái)gui庫(kù)。
2、 他是跨平臺(tái)的gui庫(kù),支持的操作系統(tǒng)很全面,甚至支持pda(說(shuō)不定過(guò)一段時(shí)間他都能夠支持symbian了)。
—— 此跨平臺(tái)非彼跨平臺(tái),它雖然不像java那樣是“全面”的,而僅僅是gui庫(kù),但是gui是計(jì)算機(jī)編程中,最為麻煩、耗費(fèi)時(shí)間、容易出現(xiàn)bug的部分,特 別當(dāng)你想要自己的軟件運(yùn)行在多個(gè)操作系統(tǒng)上的時(shí)候,開(kāi)發(fā)和維護(hù)的難度讓人難以想象。其實(shí)c++也是支持“跨平臺(tái)”的,因?yàn)閏++可以在任何平臺(tái)上編譯運(yùn) 行,之所以沒(méi)幾個(gè)人說(shuō)他是跨平臺(tái)的,主要問(wèn)題就出在變量長(zhǎng)度和各操作系統(tǒng)的gui(這里的“界面”我指得是很廣義的)上,如果解決了gui的問(wèn)題,基本上 就解決了c++的“跨平臺(tái)”問(wèn)題——至少不用為每種平臺(tái)都維護(hù)一份源代碼了。
3、 wxwidgets提供的gui是大量使用宏的,這就意味著它是在盡可能的使用目標(biāo)系統(tǒng)native的gui樣式。
——你可以訪問(wèn)wxwidgets網(wǎng)站,看看那些開(kāi)發(fā)的軟件的截圖,全是系統(tǒng)native級(jí)別的。如果你開(kāi)發(fā)了一個(gè)xp系統(tǒng)的軟件的話,你的軟件會(huì)仍然以“xp專(zhuān)有的‘小賤人’級(jí)別”的面貌展現(xiàn)在你面前。
4、 它支持的編譯器也很多,而且borland也曾聲明將在c++builderx2里邊提供對(duì)wxidgets的支持——預(yù)覽版都出來(lái)了。
——其實(shí)我就是看到borland在c++不景氣的時(shí)候,這么看重這個(gè)東東,甚至用它來(lái)做“王牌”,才開(kāi)始注意到他的。當(dāng)然,反過(guò)來(lái),也正是borland的支持,才使他活力大發(fā)的。
5、 自然,有牛X支持,而且是開(kāi)源的,wxwidgets一直都在快速穩(wěn)健的開(kāi)發(fā)中,其周邊工具也越來(lái)越多。
—— 隨著m$開(kāi)始全力支持他的.net,c++成了“沒(méi)落”的語(yǔ)言,但是不可否認(rèn),c++還是有很多用武之地的,所以根本不可能真正沒(méi)落。沒(méi)有了超牛X的支 持,地球人自然開(kāi)始尋求新的發(fā)展方式,wxwidgets這種開(kāi)源免費(fèi),且允許商業(yè)應(yīng)用的好東東,自然會(huì)被人們所重視。
當(dāng)然,wxwidgets也有一些不足,比如官方文檔不全(至少我覺(jué)得個(gè)官方的help遠(yuǎn)遠(yuǎn)不 夠我的菜鳥(niǎo)需求,大部分都是網(wǎng)絡(luò)上零散的教程),特別是沒(méi)有源代碼的開(kāi)發(fā)速度快;沒(méi)有強(qiáng)大全面的rad工具;還沒(méi)有形成很濃的產(chǎn)業(yè)氣候,等等。但是,個(gè)人 覺(jué)得它的好處絕對(duì)大于它的缺點(diǎn),而且很有發(fā)展前途。
