精華區beta Programming 關於我們 聯絡資訊
※ 引述《cyt.bbs@cd.twbbs.org (<(@ ̄︶ ̄@)>)》之銘言: > 在 wxWidgets 的 roadmap[1] 有看到 3.0.0 以後會納入 STL 的東西: > "This stable release will have STL compatibility for compilers that support > templates fully. For example the wxString class will derive from > std::basic_string<>. " > 算是好消息嗎? :P 我想改良在這種小地方並不是使用者真正 care 的。 我的想法是這樣的... 面對 template 的發展壓力, wxWidgets 從以前的堅決聲明, 「這已經被討論過很多次了,template 是個惡名昭彰的特性, template 在 wxWidgets 是不被考慮的。」 到現在的略為低頭,確實表現了 template 在 framework 設計上面的必須性。 但是 template 成熟的太晚,而 wxWidgets 出生的太早, 這不能說是 wxWidgets 的錯誤, 但 wxWidgets 如果要在本質上發揮 template 的威力, 那也許整個架構都要翻掉,而這是不可能的事情。 wxWidgets 已經累積了很多的努力,要放手談何容易, 更何況 wxWidgets 日前不知道為什麼竟然又燒了起來, 似乎一度就要成為 C++ free GUI framework 的主流。 但是講白一點,wxWidgets 已經是上個世代 framework 的象徵了, 老實說當初看到打死不支援 template 跟 RTTI 的設計理念就讓我很無言, 我明白放手不容易,但是頑固的不肯前進讓我懷疑設計者的目光短淺。 > > iv Dialog Box 本身就是 C++ 檔,控制項可以完全當作一般變數處理。 > > 不用寫什麼資源描述語言,新增跟刪除移除控制項都非常方便。 > http://www.linuxsir.org/bbs/showthread.php?t=228669 > 這邊有看到另一種看法: > 「Ultimate++我覺得前景未必好 > 首先 使用了一個自定義的模版保存界面的信息,在wxWidgets下和GTK下都可以用XML描述 > 界面。代碼量一樣可以減少很多。 > 其次關於代碼量的減少有很多爭議,wx的Wiki曾說比較的例子比較老,而且用Ultimate++ > 的實現的和wx的例子的功能不是完全一致的。」 > 我看了一下比較的程式碼,行數真的差蠻多的 :P 我同意那些程式碼的確有偏頗, 這個問題在 Ultimate++ 上面的討論區也有被拿出來講, 不過即使把那些地方平衡起來, Ultimate++ 的簡潔還是顯而易見的。 > > 缺點 > > 1. 編出來的執行檔偏大,一個小小的視窗程式大概要 0.5 MB > > 但是隨著程式碼越來越多,執行檔大小增加的速度非常緩慢。 > 從 U++ 的首頁[2]跟 FAQ[3]講的東西就可以感覺得到 :P > > 2. 第一次編譯要很久,Ultimate++ 第一次大概要 5 分鐘 > 這是指編譯 library 本身嗎? > 有看過別人的經驗是編譯應用程式的速度是用緩慢來形容,不知你的實際經驗是? 實際上的狀況是: Ultimate++ 提供的是完全的原始碼,沒有任何預先編譯的部分, 所有的原始碼根據模組化被分割成幾個函式庫, 所以如果你要用到哪些函式庫,在第一次使用的時候,那個函式庫就被整個編譯, 但是以後你再需要用到的時候,就不用再編譯了, 即使你開發別的專案也是一樣,不用再重新編譯。 開發一般的視窗程式,會用到的函式庫大概是九個, 這九個函式庫的總合編譯時間,在我的 P3-800 上面是 4:29 編譯器 VC7 選項 Optimal。Debug 的話會更快。 函式庫一次性的編譯完成之後, 以後每次編譯就只會動到你自己的程式, 幾秒鐘就完成。 基本上跟安裝完 wxWidgets 以後進行的第一次編譯很久是一樣的意思。 ============================================================ 你提供的連結,裡面我有看到一個讓我很感興趣的東西 XD http://notus.sourceforge.net/ 這個用來設計 GUI 的方法發揮了 template 的可怕威力  ̄□ ̄ Hello World 範例 ============================================================ #include "notus/platform/win32/traits.hpp" #include "notus/impl/entries.hpp" #include "notus/display/window.hpp" #include "notus/view.hpp" #include "notus/strategy/stdstrategies.hpp" using namespace notus; typedef view < displays::window_frame<>, //display boost::tuples::tuple < strategies::dataupdate<>, //process data changes strategies::main_window //handle the exit command, etc. > > main_window ; int notus::main( int argc, char *argv[] ) { main_window main; main = "Hello World!"; rungui(); return 0; }; ============================================================ 在 GUI 上上下下每一個元素,包含控制項,資料交換,事件處理 他都用盡 generic-programming 跟 meta-programming 的威力 雖然我也有想過類似的東西,但是他的架構比我想的成熟太多了 呃...... 要學會用這個 framework 的人得是 C++ 高手,而我不是 XD 很期待他快點發展成熟。 上兩次的更新分別是 Notus v1.1.2 / pre-alpha 2005-04-29 Notus v1.1.1 / pre-alpha 2004-05-10 希望他不要胎死腹中。 -- To iterate is human, to recurse is divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- 夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子 之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下 矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以 喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦將知止知止可以t9562614.HUNG.ab.nthu.edu.tw