天天看點

(轉) 簡介Visual C++ 2008 Feature Pack

緣起

  無數的Visual C++程式員為了那幾個單調、簡單Visual C++的控件苦惱着;而無數的Visual C++程式員又因為這個界面問題而大發其财。BCG Library、Magic Skin 這些專門為解決程式界面問題的庫順勢而生。想必絕大多數用Visual C++寫成的程式在商業化之前都會經過這些界面庫的修飾。使用标準的MFC,想給菜單項加個圖示都得通過自己派生一個類來做的情況下,你還指望自己能包攬程式的界面開發麼?說老實話,measure這個單詞就是那時候記住的。(MeasureItem 和 DrawItem 這兩個可重載的函數是MFC給程式員預留的擴充界面的接口。)

  自Visual C++ 6.0以後,一直強調使用者體驗的Microsoft也坐不住了。Visual Studio 2002、2003的平面風格,給大家耳目一新的感覺,引領了時代潮流。而後的Office 2003界面一時間也是獨領風騷。可是這些界面庫都是MS自己留着用,從沒想到拿出來。終于,終于在Visual Studio 2005裡面,.NET程式員可以毫不費力的使用Office 2003風格的界面控件了。TextBox控件也衍生出了很多小弟弟,限制某些字元的輸入,也不用去響應TextChanged、KeyDown等事件了。但是Visual C++程式員肯定是再一次的失望了。在這幾個版本的Visual Studio中,我沒有看到MFC的本質的提升(添加CImage類不能算是大幅度改進。其實對于圖像操作,VC程式員們早就自力更生自己解決了。)

  2008年01月07日,MS總算是沒有忘記這些使用Visual C++的老朋友。推出了 Visual C++ Feature Pack Beta下載下傳。這次的Feature Pack是專門針對VC庫的一個擴充。擴充分為兩方面,一方面是MFC的界面控件庫;另一方面是對ISO C++ Standard 2003 标準的擴充。

  部署

  部署可是有點不容易!部署首先需要的是耐心,其次還是耐心,最後給自己找本書看吧!不然你呆呆的盯着電腦一下午可能會瘋掉。

  首先,需要到微軟的下載下傳中心下載下傳Visual C++ Feature Pack Beta,大小是303M。然後,你需要在機器上安裝了英文版的Visual Studio 2008。别的語種Feature Pack不支援,看樣子也裝不上。2005? Visual C++開發組的某個人在Blog上說可以(引用原文* Older versions of VC (e.g. VC8).),可是下載下傳中心上沒這麼說。自己看着辦吧!VS_Setup.exe運作以後生成那個安裝腳本的時間,相比大家心裡有數吧?大家應該在安裝 VS 2005 的時候就領教過了。

  接着,就該安裝這個Feature Pack了吧?錯!你以為安裝了Visual Studio 2008 就沒事兒啦?一定要完全安裝才可以!完全安裝VS 2008!就連SQL Sever 2005 Express 和 水晶報表的基本元件也不能少!我就是吃了這個虧,結果導緻Feature Pack 安裝到一半的時候出現錯誤復原。錯誤如下:

Returning IDOK. INSTALLMESSAGE_ERROR [Error [1].An installation package for the product [2] cannot be found. Try the installation again using a valid copy of the installation package '[3]'.: 1706Microsoft Visual Studio Team System 2008 Team Suite - ENU] [1/15/2008, 7:38:27] (HotIron::CMspExternalUiHandler::UiHandler) Returning IDOK. INSTALLMESSAGE_ACTIONSTART [Action 15:38:27: Rollback. Rolling back action:] [1/15/2008, 7:39:12] (HotIron::MspInstallerT > > > >::PerformMsiOperation> Patch (VS90-VCFeaturePack-Beta-KB945273-x86x64-ENU.msp) install failed on product (Microsoft Visual Studio Team System 2008 Team Suite - ENU). Msi Log: Visual C++ 2008 Beta Feature Pack - KB945273_20080115_073311988-Msi0.txt [1/15/2008, 7:39:12] (HotIron::MspInstallerT > > > >::PerformMsiOperation> MsiApplyMultiplePatches returned 0x643 [1/15/2008, 7:39:12] Entering Function: HotIron::MspInstallerT > > > >::Rollback...

  當時試了幾次都這樣。結果在我徹底暈之前想起了Google,還不錯,MSDN論壇上有個夥計說,VS 2008必須得完全安裝。My God,偶把以前沒裝的VC for IA64裝上了,再試,失敗。 我把沒裝的Visual Basic 裝上了,再試,還是失敗。直到我徹底繳槍把SQL Server 2005 Express 和水晶報表基本元件也選上了,才確定無恙。My God!,更新和拷貝幾個VC檔案夾下的檔案幹啥還要水晶報表?在這裝裝卸卸期間,您手上的書就派上用場了。啊?想上網? Visual Studio 在更新、安裝、解除安裝期間IE是不能使用的,還是看書吧。

  各位記住!想安裝Visual C++ Feature Pack Beta一定要完完全全的安裝VS 2008,一點兒都不能少!

  确認之後,就可以運作Feature Pack的安裝包了,請注意,如果您是Vista,千萬别忘了"Run as Administrator"。運作後,HotfixInstaller服務将啟動,并安裝Feature Pack更新。安裝過程順利的話大概也要20分鐘以上的時間,您還得勤盯着點兒,HotfixInstaller服務有可能沒有原因的挂在那裡長時間不動(不是Not Responding狀态)。不用害怕,隻要直接在Task Manager中結束掉程序,并重新運作安裝包就可以了。

  初探

  終于搞定了,看看效果吧!唉,天色已晚,不打算自己寫程式了。從下載下傳中心找到了 Visual C++ 2008 Sample Library 這個快,5M,下載下傳,安裝。

  在Microsoft Visual Studio 9.0Samples1033 下找到AllVCLanguageSamples.zip 展開,找到Feature Pack 檔案夾,打開裡面的工程編譯。終于看到Feature Pack 支援後界面了!下圖是基于Feature Pack 庫開發的仿Outlook界面:

(轉) 簡介Visual C++ 2008 Feature Pack

漂亮吧?這可不是用非微軟提供的函數庫實作的哦!在Feature Pack例子裡面有一個叫做New Control的工程。編譯後,您可以看到所有Feature Pack已經實作好的界面控件。

  先是按鈕控件組:

(轉) 簡介Visual C++ 2008 Feature Pack

  圖2

  類型非常豐富,比CButtonST毫不遜色,贊一個!

  接着是顔色選擇控件組,請看清楚,這不是CColorDialog,而是把CColorDialog拆散了的單個的控件哦!

(轉) 簡介Visual C++ 2008 Feature Pack

  圖3

  跟着是連結、檔案路徑等雜項:

(轉) 簡介Visual C++ 2008 Feature Pack

  圖4

  再來,CEdit控件的衍生品,可以限制輸入字元的各種Masked控件:

(轉) 簡介Visual C++ 2008 Feature Pack

 接着跟,ListControl和PropertiesGrid控件,再贊一個!

(轉) 簡介Visual C++ 2008 Feature Pack

  圖6

  最後是Shell相關的兩個控件,請注意,不論是TreeCtrl還是ListCtrl都是支援直接打開ZIP壓縮包的功能哦!(npp.4.6.src.zip)

(轉) 簡介Visual C++ 2008 Feature Pack

  圖7

  确實令人耳目一新的感覺,贊贊贊!這些控件都是在Feature Pack中直接實作好的,類名都是以CMFC為開頭的。直接拿來用就可以了,在現有界面庫基礎上派生新類的事情以後可以少做很多很多了。

  對于ISO C++ Standard 2003 的支援,主要是提供了正規表達式、随機數等函數庫支援。這部分還沒來得及嘗試,等有機會再介紹。有關Feature Pack的一些Q$A可以通路MSDN 上VC産品組的Blog,有關Feature Pack的文檔您也可以在下載下傳中心上下載下傳。