摘要: 眼下新的GUI Framework的第一版也就只剩下3個控件了。雖然之前說過要開發一個理論上是P2P上的遠程對象交互協議、要開發一個窗口設計器、還要開發一個LALR Parser GUI作為GUI Framework的demo。我想這也是一個大的工程,對于我一個人來說。但是今天的一個想法終于把這三個東西串了起來。
閱讀全文
posted @
2008-08-19 09:51 陳梓瀚(vczh) 閱讀(1804) |
評論 (5) |
編輯 收藏
摘要: Status Bar所提供的消息相當的詭異。Status Bar里面的Items的數量以及寬度要一次性設置好,每次修改的時候都要推翻重建一次,只不過里面的Text倒是可以單獨改掉。在XP底下有效的raise border似乎在Vista就沒有了。看來Vista已經從偽3D徹底轉向了2D了。
Status Bar在CreateWindowEx的時候會自動將自己放在窗口的最底下,每一次修改Status Bar的尺寸的時候,它又會自動把自己放在窗口的最底下。當然,你可以讓他出現在最上面。雖然如此,但是我封裝的時候還是想自由地修改尺寸和位置,當且僅當我想讓他出現在窗口最下面的時候他才出現在窗口最下面,于是我只好截獲Status Bar的WM_SIZE消息并扔掉了。
當初為每一個控件都自動Subclass掉的想法還真是正確啊……
閱讀全文
posted @
2008-08-15 23:34 陳梓瀚(vczh) 閱讀(1546) |
評論 (1) |
編輯 收藏
突然發現Visual Studio 2008的Class Diagram已經支持到native c++了,遂喜,隨便點了一下namespace vl就View Class Diagram了。剛一點就后悔了,等了幾分鐘才出一張圖。然后我嘗試Export class diagram to image.
剛開始點*.emf,這是一種擴展的元文件,文件里面實際上是一堆GDI命令。好了,這個文件一共有3M多,用畫圖打開遲遲不出來,以為操作失敗,后來打開任務管理器一看,畫圖剛剛將使用的內存增長到400M,過了10分鐘才最終顯示。不過沒關系,我的電腦3G內存,才用了1.7G死不了的……后來點*.jpg,就剩下2.7M了。
因為覺得挺有意思的,那么我就提供下載吧(點擊
這里)。
我的Vczh Library++已經斷斷續續寫了兩年多了,因為我是在一個GUI Test Project里面打開的,所以一些其他功能譬如Vczh Free Script、正則表達式、上下文無關文法處理、新的XML Parser等跟GUI無關的部件不在里面。全都包含進去的話估計會更大,我也不想試,搞垮電腦就不好了……不過從這張圖可以看出Vczh Library++是一種扁平結構的。圖里面有很多類是通過宏生成的,譬如GUI的每一個event object都用了一個宏產生了4個類,用于輕松綁定到多個普通函數、靜態函數和類成員函數上。里面還有很多離散對象譬如enum啊、VL_WinListViewItem等等,非常多。最后可以清楚地看到目前GUI的進度,也是一個扁平結構,繼承最長的也不外是Button。因為Win32API的WC_BUTTON類功能強大啊,單選復選普通按鈕、GroupBox、SplitButton還有一種新的有箭頭的居然都是從里面產生出來的,于是繼承路徑就變成VL_Base -> VL_WinControl -> VL_WinCustomButton -> VL_WinButton了。
下載的文件是一個rar包,包含一個jpg文件和一個從Class Diagram文件改過來的XML,包含了圖片所有的類的全名(包括namespace),頗為壯觀……
posted @
2008-08-15 09:58 陳梓瀚(vczh) 閱讀(2211) |
評論 (8) |
編輯 收藏
摘要: Track Bar很是人性化,不會跟自己之前的經驗沖突。Track Bar下面那些杠杠原來是自己插入的,還能改,還真是想干啥就能干啥……
閱讀全文
posted @
2008-08-15 08:28 陳梓瀚(vczh) 閱讀(1768) |
評論 (1) |
編輯 收藏
摘要: Win32 API為了讓控件更為有用真是煞費苦心,不僅Tab沒有提供控件可見控制,連Scroll Bar點擊的時候竟然是不修改Position的,要我在每一個消息里用SBM_SETSCROLLINFO來設置當前的位置。而且當前的位置的獲得還不是一致的,根據消息的不同而不同。真是故意為難人啊。
閱讀全文
posted @
2008-08-15 06:26 陳梓瀚(vczh) 閱讀(1429) |
評論 (1) |
編輯 收藏
摘要: 今天不小心看到了http://www.antlr.org/works/index.html,我一直認為ANTLR是LR(k)分析器,后來我錯了,原來只是LL(k)。我以前寫的一個Vczh Syngram是LR(k)的畸形,今天看了居然連LL(k)都能有GUI,我不做一個豈不是對不起自己?
閱讀全文
posted @
2008-08-14 05:21 陳梓瀚(vczh) 閱讀(1621) |
評論 (2) |
編輯 收藏
摘要: 原來API提供的TabControl只是改改樣式而已,客戶區連TabPage標簽也算在了里面,點擊不同的TabPage也不會自動切換子控件的可見屬性。這些都要封裝啊囧……
在這個設計里,雖然TabPage是一個普通的類,但是每一個TabPage都會自動附帶一個Static Control,并在適當的時機修改大小以及修改可見屬性。子控件實際上需要放在TabPage的Static Control里,不然的話其實可以連TabPage標簽都擋掉。
閱讀全文
posted @
2008-08-13 06:33 陳梓瀚(vczh) 閱讀(1713) |
評論 (2) |
編輯 收藏
摘要: 囧,實在是囧啊。比起ListView,TreeView還真是簡單了無窮多倍,一個晚上就搞定了。貼貼代碼和圖。
閱讀全文
posted @
2008-08-11 05:05 陳梓瀚(vczh) 閱讀(2296) |
評論 (6) |
編輯 收藏
摘要: ListView實在是超級無敵復雜地難封裝啊,Vista下的ListView簡直是萬能的,以至于我萌生了將grid和tree-grid都用ListView來實現的想法。當然這只是想一想,暫時不想做。這個ListView花了1700行代碼封裝完成,共有4個類,分別是item、column、group和listview,listview自己的事件16個。
代碼和圖片內詳
閱讀全文
posted @
2008-08-09 02:36 陳梓瀚(vczh) 閱讀(6686) |
評論 (27) |
編輯 收藏
摘要: 今天封裝好了ComboBox,于是做了個Demo。這個Demo只有一個窗口,上面放著一個ComboBox。如果往里面打文件名的話,會把當前路徑下的被篩選過的文件名填充到ComboBox,并自動打開下拉列表。
閱讀全文
posted @
2008-08-04 07:20 陳梓瀚(vczh) 閱讀(2227) |
評論 (3) |
編輯 收藏