輪子哥的gaclib發展的怎樣?走的時什麼路線?

是像wxwidgets那樣高效高速還是qt那樣功能強大?抑或是像mfc那樣簡單包裝一下?


本質上還是DirectUI,然後我用預設的皮膚強行模擬出了Native UI的樣子。如果你夠熟練的話,可以寫一個跟OSX長的完全一樣的皮膚,然後再OSX的版本裡面使用。不過我實在沒時間,所以並沒有自己做。Windows的Native UI都是有動畫的,這些我全部都支持。

GacUI一直推薦使用XML來開發,做所有的GUI相關的事情,實在太複雜的可以嵌入一點點腳本(譬如data binding)。這套系統主要的思路還是參考WPF的那種感覺,但是我的data binding跟WPF的一個本質區別是,我可以支持所有種類的表達式。譬如說

&

當然了這只是個例子,實際上你綁定的來源當然是ViewModel。

目前我配套的命令行工具GacGen.exe,會讀取你的XML資源,把所有的GUI類型先生成C++的框架代碼,然後生成他們的反射代碼,然後把所有窗口、控制項和皮膚的構造函數(其實就是構造出裡面的控制項和做data binding的過程),全部生成我自己的腳本語言的位元組碼,然後跟XML資源裡面的其他東西(譬如圖片文件)等打包成一個二進位文件。你在運行之前先把我的二進位文件載入進去,然後C++那邊直接new你想要的窗口就可以了。

===============以上是已經做好的===============

===============以下是還沒做完的===============

不過反射佔用的空間實在是太多了,所以現在還在開發一個功能,就是把腳本轉成C++。腳本當然有一些功能是C++無法代替的,譬如你要load進一個別人在程序運行的時候才給你的二進位資源文件,然後打開裡面包含的窗口。不過如果你的程序不需要這種插件的支持的話,就可以把腳本轉成C++。因為我的腳本是靜態類型的,所以實際上我知道你的每一步操作對應到C++裡面都是什麼,因此只要把腳本全部替換成C++代碼,那麼那個超大的反射就可以不帶了。

最近還在給XML添加visual state、animation和state machine的功能。所有的這些功能都會使用GacGen.exe編譯成腳本。配合腳本轉C++的功能做好的話,這些東西最後都會以超高的效率來運行。做完了這些,就會有拖控制項程序——GayStudio了!


把基於 Cpp 框架的應用程序寫出了 CS 和 XAML 或者 Android Layout XML 的感覺?


推薦閱讀:

計算機專業大類下,還有哪些細分的專業,分別是幹什麼的?
你見過的最牛逼的命令行程序是什麼?
有沒有推薦的能顯示時鐘的,且簡單樸素的 Windows 屏幕保護程序?
拉比克偷取他人技能,在代碼程序層面時如何實現的?

TAG:圖形用戶界面 | 程序 |