(2011.12.5再次更新) 經(jīng)過了兩個星期的開發(fā),GacUI添加了TabControl和ListView的一部分視圖。這次的ListView的設計的目標是要跟win7的資源管理器相似,TabControl也是依照win7的本地樣式設計的。代碼仍然保存在
Vczh Library++3.0(Candidate\GUI\GuiDemo\GuiDemo.sln)里,看圖:


Direct2D的對于文字的高級渲染效果還沒有實現(xiàn),除此之外,List、Detail、Tile和Information也還沒有做。ListView有兩個模式,一個是跟普通的ListView一樣可以自行添加ListViewItem的,另一個是virtual list模式,需要自己實現(xiàn)一個支持IListViewItemView的GuiListControl::IItemProvider,然后使用ListView的那六個ContentProvider,就可以做出跟ListView一樣的效果,但是性能巨快無比的列表了。因為添加的ListViewItem很多的話,性能的瓶頸會在添加到列表的過程中,而ListView本身絲毫沒有區(qū)別。因此內(nèi)容太多的話建議使用virtual list模式,好處是不需要每一個項目都new一個對象,ListView會用一個item index來回調(diào)出具體的數(shù)據(jù)內(nèi)容。
根據(jù)
上一篇文章的評論,我決定以后發(fā)布GacUI的時候同時提供dll和一對h/cpp兩種選項,其中h/cpp會根據(jù)功能提供幾個裁剪的結(jié)果,而dll總是包含所有功能。使用dll的話,可以做到跟C#的WinForm和WPF一樣,把應用程序的插件寫在另一個dll里面。而h/cpp因為合并的文件太大,因此需要打開Visual C++的/bigobj選項,好處是可以深入使用到內(nèi)部的所有功能,還能根據(jù)自己的需要進行修改,而不局限于dll所提供的GUI部分。
為了配合GacUI的使用,跟QT的QML一樣,我會升級以前開發(fā)的FreeScript2.0,做出一個3.0的版本來跟GacUI配合使用(這個功能是可選的,裁剪的h/cpp文件對將不強制包含腳本代碼,但是dll總是包含腳本功能)。關鍵的功能是直接支持json(合法的json數(shù)據(jù)即合法的FreeScript3.0代碼),容易使用的異步IO功能,還有跟linq一樣好用的list comprehension,最后當然是跟javascript的語法想當接近但是直接支持class,不會跟javascript一樣曲線救國。相信學習起來的難度非常小。這樣就可以把一部分用C++寫起來比較麻煩的代碼用FreeScript3.0實現(xiàn),并且這部分代碼將可以在GacUI Editor內(nèi)部編輯。GacUI會跟WPF一樣提供兩種調(diào)用方法,一種是C++自己new那些類,另一種就是使用GacUI Editor產(chǎn)生的xml了。我會盡量讓xml方法簡單易用,就跟XAML一樣,不過因為我的對象模型顯然沒有XAML(主要是C#)那么復雜,相比會比XAML容易閱讀和使用。
=============================
P.S. 經(jīng)過若干天的艱苦奮斗終于完成了三個View和DirectX的支持,就剩下Detail一種最復雜的View了。放圖:



posted on 2011-12-03 07:09
陳梓瀚(vczh) 閱讀(3638)
評論(27) 編輯 收藏 引用 所屬分類:
GacUI