微軟一站式開發(fā)技術框架2009年9月17日更新。下載地址:
http://cfx.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33087
如果您是第一次聽說All-In-One Code Framework這個項目,請參閱主頁上的相關介紹http://cfx.codeplex.com/,以及這兩篇blog
CodeFx:一站式微軟開發(fā)技術框架解決方案
微軟一站式開發(fā)技術框架解決方案 中文說明
CSWin7TaskbarAppID,VBWin7TaskbarAppID,CppWin7TaskbarAppID
Application User Model ID (AppID) 是Windows 7任務欄新引入的一大特性。擁有同一個AppID的應用程序,其在Windows 7的任務欄按鈕會被定義在同一個分組中,彼此重疊在一起。同時AppID也是定義應用程序Jump List的重要依據。CSWin7TaskbarAppID、VBWin7TaskbarAppID演示了如何通過Windows API Code Pack設置進程級別的AppID,以及修改進程中特定窗口的AppID。CppWin7TaskbarAppID則演示了使用C++和Windows API設置進程級別的AppID,以及修改進程中特定窗口的AppID,此范例需要安裝Windows 7 SDK才能成功編譯。
CSWin7TaskbarOverlayIcons,,VBWin7TaskbarOverlayIcons,CSWin7TaskbarProgressbar,VBWin7TaskbarProgressbar
應用程序可以在其Windows 7的任務欄按鈕上設置Overlay Icons與Progressbar以顯示其不同的工作狀態(tài)與任務進度。CSWin7TaskbarOverlayIcons,,VBWin7TaskbarOverlayIcons,CSWin7TaskbarProgressbar,VBWin7TaskbarProgressbar演示了如何應用Windows API Code Pack設置應用程序任務欄按鈕的Overlay Icons以及Progressbar的進度與狀態(tài)。
CSWin7TaskbarThumbnail,VBWin7TaskbarThumbnail
應用程序可自定義其任務欄Thumbnail預覽效果和Thumbnail工具欄按鈕是Windows 7新引入的特性。CSWin7TaskbarThumbnail,VBWin7TaskbarThumbnail演示了如何應用Windows API Code Pack設置應用程序任務欄Thumbnail預覽的效果以及自定義Thumbnail工具欄按鈕。
CSWin7TaskbarJumpList,VBWin7TaskbarJumpList
Jump List是Windows 7新引入的又一特性。通過Jump List,用戶可以更方便快捷地找到自己近期或經常通過某一個應用程序打開的文件。應用程序還可以在Jump List中添加用戶任務以方便用戶打開其他相關的應用程序,在Jump List中自定義類別、文件項目、文件鏈接。CSWin7TaskbarJumpList,VBWin7TaskbarJumpList演示了如何以AppID注冊應用程序以及文件句柄,通過Window API Code Pack設置Jump List用戶任務和自定義Jump List類別、文件項目和文件鏈接。
XAMLSL3SplashScreen
XAMLSL3SplashScreen 演示了如何為Silverlight程序設置自定義的啟動畫面。當Silverlight程序正在下載時,默認情況下會有一個自帶的啟動畫面。如果想要改變這個啟動畫面,我們可以自己定義一個。此外,在ReadMe.txt中還談到了一些使用SplashScreen的限制。
CSSL3Animation, VBSL3Animation
CSSL3Animation和VBSL3Animation演示了如何在Silverlight中創(chuàng)建動畫效果。由于Silverilght中自帶的動畫效果類很多,不可能在一個項目中全部涉及。因此項目中只包括了Point和 Double數據類型相關的動畫。其他動畫效果的代碼大同小異,不在此贅述。
項目演示了:
• 如何通過XAML來進行PointAnimation
• 如何通過Code Behind來進行PointAnimation
• 如何用PointAnimation來對自定義的屬性做動畫效果
• 如何使用Silverlight 3新功能: Easing
• 如何使用關鍵幀做出動畫效果
CSSL3DeepZoom, VBSL3DeepZoom
Silverlight deep zoom 提供了一種高效的方式來展示高分辨率的圖片以及大量圖片的集合。用戶在一開始下載的是大型圖片(集合)的縮略圖,這個縮略圖的分辨率比較低。隨著他們漸漸放大圖片上的某一部分,分辨率較高的圖片中的那一部分會被下載到客戶端。此外,你還可以在自己的程序中對deep zoom進行大量的自定義,使deep zoom的場景完美地融合到你的程序中。這個例子展示了一些常見的deep zoom的自定義方法。它包括:
• 使用Deep Zoom Composer來創(chuàng)建deep zoom場景。
• 下載并解析metadata。
• 在一個collection場景中實現hit test。
• 創(chuàng)建一個非位圖的UIElment,并且讓它和MultiScaleImage一起移動,協(xié)同縮放。
• 在一個collection場景中移動一張sub image。
• 使用DeepZoomTools.dll在代碼中動態(tài)創(chuàng)建deep zoom場景。
CSSL3WriteableBitmap
WriteableBitmap是Silverlight 3的一個新功能。你可以用它來操作位圖中的每一個像素。你可以想到很多很多應用場景,不過,出于安全性考慮(例如,Silverlight不允許你寫使用指針的unsafe代碼),和同樣的桌面程序相比,你可能需要寫更多的代碼。這個例子包括3個小的示例,展示了使用WriteableBitmap的常見場景:
• Gun shoot。你可以選擇兩張不同大小的圖片。該示例將會把他們縮放到相同的分辨率,并且將一張圖片覆蓋于另一張上方。當你點擊上方的圖片開槍時,一個槍痕將會顯現,并且你會射穿上面那幅畫,從而可以看到下面的畫的內容。該示例展示了如何將不同分辨率的元圖片縮放到相同的分辨率,以及如何修改某個單獨的像素。
• Fill color。該示例實現了繪圖軟件中常見的一個場景:油漆桶,也就是為某塊區(qū)域填充上同樣的色彩。它展示了如何在Silverlight WriteableBitmap中應用常見的圖形學算法,并且還通過模擬CLR調用堆棧的方式解決了過深的遞歸可能造成的stack overflow問題。
• Screenshot。該示例展示了WriteableBitmap的另一功能:創(chuàng)建屏幕截圖,并且把結果保存為一個bmp文件。它也說明了該功能的一些局限性。
為了發(fā)掘出WriteableBitmap的強大潛力,你需要一些圖形學的知識。例如,你必須掌握位圖是如何在內存中存儲的,必須了解關于像素和顏色的基本知識,等等。為了提高效率,你還必須學會位移運算。
CSSL3CustomControl
CSSL3CustomControl 是一個silverlight library 項目。 通過實現一個可顯示高亮文本的HighLightTextBlock,項目展示了如何創(chuàng)建自定義控件。以及通過關聯(lián)項目XAMLSL3StyleControlTemplate,展示如何利用style來更改HighLightTextBlock外觀。
CSADONETDataServiceSL3Client, VBADONETDataServiceSL3Client
CSADONETDataServiceSL3Client和VBADONETDataServiceSL3Client 演示了如何在Silverlight中訪問ADO.NET Data Services。在項目中,使用ADO.NET Data Services暴露出的URL來生成代理類,然后通過代理類與服務器端進行通信,進行查詢、修改、添加、刪除的操作。在項目中一共生成了三個代理類,分別對應服務器端程序CSADONETDataService中的三個服務。此外,項目中的ReadMe.txt還介紹了一些在使用Silverlight訪問ADO.NET Data Services時可能遇到的情況。
CSASPNETMVCFileDownload
這是CodeFx中第一個ASP.NET MVC例子。10月份我們會有更多的ASP.NET MVC示例問世。CSASPNETMVCFileDownload演示了一個文件下載的例子。其中包括注冊自定義URL路由,以及自定義ActionResult。
CSASPNETGridView, CSASPNETDataPager, CSASPNETMenu
這三個示例分別演示了ASP.NET GridView, DataPager, Menu控件的用法。
VBASPNETMasterPage
這個例子示范了在ASP.NET模板頁的使用。使用 ASP.NET 母版頁可以為應用程序中的頁創(chuàng)建一致的布局。單個母版頁可以為應用程序中的所有頁(或一組頁)定義所需的外觀和標準行為。然后可以創(chuàng)建包含要顯示的內容的各個內容頁。當用戶請求內容頁時,這些內容頁與母版頁合并以將母版頁的布局與內容頁的內容組合在一起輸出。
CSASPNETOutputCache
CSASPNETOutputCache演示了ASP.NET Output Cache以增加頁面響應速度。相關blog: http://blogs.msdn.com/codefx/archive/2009/09/07/asp-net-output-cache.aspx。
VBListFilesInDirectory
這是CSListFilesInDirectory示例的VB.NET版本。其源于一個在論壇里經常被問到的問題:.NET BCL中的Directory.GetFiles 方法可以枚舉某個文件夾下的文件,但它有個很致命的缺點。Directory.GetFiles是等枚舉到所有文件以后才會返回。如果該文件夾下的文件很多,或者這是一個網絡文件夾,即訪問速度比較慢,Directory.GetFiles就會hang在那里。你可能就需要同步地等待它的返回。一個理想的解決方案是,每枚舉到一個文件,就立刻返回這個文件,而不是等待枚舉到所有文件。CSListFilesInDirectory和VBListFilesInDirectory演示了如何做到這一點。
ATLShellExtIconHandler, ATLShellExtIconOverlayHandler
這兩個Windows Shell Extension的例子分別演示了Icon Handler和Icon Overlay Handler的開發(fā)。
CSVSPackage
VSPackages 是用來擴展Visual Studio集成開發(fā)環(huán)境的模塊。通過VSPackage, 我們可以提供自定義的UI元素,比如工具欄,定制的代碼編輯器以及UI設計器,還通過VSPackage來提供自定義的service。實際上,VSPackage是構成Visual Studio的最基本的單元,Visual Studio 本身就是由眾多VSPackage構成的。本例就是演示如何通過Visual Studio Integration Package Wizard 來創(chuàng)建一個簡單的VSPackage。在以后的CodeFx示例中,我們還將增一些示例來說明如何通過VSPackage來擴展Visual Studio。
CSVSPackageState
此示例展示了插件選項狀態(tài)持久化,和屬性窗口狀態(tài)。此示例并不包含解決方案和項目文件的狀態(tài)管理,它們將會在項目文件插件示例中演示。
• 工具/選項 頁面
在Visual Studio中選擇 工具/選項 目錄打開選項窗口。樹狀導向面板中包含了選項分類和每個分類中的選項頁面。當你選擇頁面時,選項出現在右邊面板。此頁面使用戶可以改變選項值,也就是VS插件的狀態(tài)。DialogPage類實現了IProfileManager,它提供了選項頁面和用戶設定的持久化功能。LoadSettingsFromStorage和SaveSettingsToStorage方法默認實現了把屬性存入注冊表中用戶部分,前提是屬性是可以被轉化為字符串形式。

• 屬性窗口
在此示例中,我們將使用ToolWindow來展示屬性窗口。當用戶選中Visual Studio中的對象時, 對象上所有公共的屬性都會像是在屬性窗口中。如要用代碼來選中一個對象時,需要將此對象放入一個選擇容器中。我們使用STrackSelection 服務來通知Visual Studio。
![clip_image001[4] clip_image001[4]](http://images.cnblogs.com/cnblogs_com/Jialiang/WindowsLiveWriter/CodeFx2009917_833D/clip_image001%5B4%5D_thumb.jpg)
最后,如果您對新版的CodeFx有任何建議和反饋,請在此提出。謝謝!