Microsoft VS2008 MFC 與 BCGControlBar 的區別


最近很多朋友問Microsoft VS2008中自帶的MFC與BCGControlBar MFC有什麼區別?

其實我們可以先搞清楚其中的關係,BCGSOFT開發的BCGControlBar MFC組件是全世界最早最成功的MFC組件,正因爲此Microsoft 與BCGSOFT在2007年達成戰略合作,BCGsoft授權給Microsoft 微軟,讓VS2008整合了BCGControlBar的部分功能。而現在新的正在出售的BCGControlBar是在BCGControlBar專業版的基礎上建立的,Microsoft VS2008中並沒有包含這些先進控件的功能,諸如 grid, editor, plannner 等。

下面是一些用戶使用VS2008集成的BCGControlBar 後的體會:

1、 集成得非常不完整。BCGControlBar 的大部分組件的最基礎的功能都有集成,但是由於只有最主要的功能被集成,就限制了開發者的發揮。比如 Ribbon 界面,表面上看似很具優勢,但是真正使用下來你才發現,這個 Ribbon 界面是非常不完整的。Ribbon 的主 Frame 風格在 Vista Aero 之外的場合,是忽略 Windows 主題和傳統風格的 Office 2007 窗口邊框風格,而這個邊框風格是不可控的,除了主 Frame,所有其他窗口都不具備這個風格。想像一個程序,在 Windows XP 裏運行的主界面邊框像 Office 2007,而除了主界面的其他所有內容都是 Windows XP 的 Luna 風格,那是多麼怪異的一種界面。所以 Ribbon 的使用範圍就被軟性限制在主界面了。但是有多少軟件只有主界面,沒有對話框(包括除主窗口之外的所有窗口)

2、BCGControlBar 大部分組件只集成了基礎功能,顯然如果要讓我們在整套軟件的開發工作得到統一,很多工作就必須在原本這些基礎功能上面進行擴展。但是 BCGControlBar 作爲一個即成產品直接套用就沒有嚴重的問題,但是當它不完整,很多工作要在原先的組件上擴展的時候,甚至即使是完整的,我們仍然經常會遇到需要在原基礎類上面進行擴展的時候,你將發現你正在挑戰一項高難度的工作,而且不久之後你會懷疑你的工作並不比微軟的集成工作更輕鬆。
3、 用 ToolBar 做自己工具的容器?沒門!
4、 ToolBar Label?沒有!
5、ToolBar CheckBox?改用 Ribbon!
6、 CMFCShellTreeCtrl 唯一給你定製的地方是 IShellFolder::EnumObjects 的其中一個參數,這個參數無論怎麼組合,都得不到一個和 BrowseForFolder 一樣的只有驅動器和文件夾的列表,總是會把 ZIP 文件認爲是文件夾,想要在列表中過濾掉不想要的行(比如你不想要列出回收站),唯一的方法是自己完全重寫整個 EnumObjects 的調用過程!不過如果自行派生 CMFCShellTreeCtrl,你的程序就有可能無法通過 Link,因爲 CShellManager 有個 bug,動態鏈接 MFC 庫使用 CShellManager 會出錯。
7、想動態更換工具欄按鈕的圖標,菜單圖標也會自動被更換,菜單和工具欄的圖標在一開始可以分別指定不同尺寸,但是動態更換的圖標就不能!
8、 想運行時隱藏工具欄的一個按鈕,它會記錄進註冊表,下次程序啓動除非你的程序顯式的顯示這個按鈕,否則這個按鈕就永遠消失,你想找一個暫時性的方法?沒有!
9、 看中了 Ribbon 的顏色方案,又喜歡 VS.net 2005 的外觀風格,沒有任何方式可以組合這兩者,唯一可以做得到的就是根據 Ribbon 和 VS.net 2005 的 VisualManauger 那幾千行代碼,自己重新寫一個!
10、 最後值得安慰的好處就是類似 CSettingStore,CDrawingManager 之類的類,還是比較實用的。只是裏面我用過的大部分覺得實用的類,我自己已經有過封裝,因爲也是三兩下的簡單事情。

由此可以看出,Microsoft VS2008只是集成了BCGControlBar 老版本的部分功能,這與BCGControlBar Library Pro Edition v15 有本質的區別。

詳情請見官方說明:http://www.bcgsoft.com/cgi-bin/forum/topic.asp?TOPIC_ID=4476 




注:本文轉載自:http://www.evget.com/zh-CN/Info/catalog/15748.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章