轉帖|其它|編輯:郝浩|2011-08-05 11:09:26.000|閱讀 1818 次
概述:Windows7提供了許多不錯的用戶體驗,諸如窗體背景透明、玻璃磨砂效果、任務欄的JumpList定義以及任務欄進度條顯示等等。伴隨著這些 特效的出現,Windows在底層也提供了相應的API支持,使得開發人員可以根據需要非常容易地在自己的應用程序中實現這些效果。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Windows7提供了許多不錯的用戶體驗,諸如窗體背景透明、玻璃磨砂效果、任務欄的JumpList定義以及任務欄進度條顯示等等。伴隨著這些 特效的出現,Windows在底層也提供了相應的API支持,使得開發人員可以根據需要非常容易地在自己的應用程序中實現這些效果。如果你是原生的C++ 追隨者,那恭喜你了!你完全可以毫無障礙地去使用這些API,前提是你需要閱讀龐大的開發文檔。如果你是新生的.NET開發人員(姑且還是將.NET developer稱之為新生者吧,畢竟咱比C++出來得晚),也沒有關系,微軟在msdn網站中也發布了專門的Windows7 API托管類庫,專門用于在.NET應用程序中調用。先來看看IE瀏覽器在Windows 7下下載文件時任務欄的進度條顯示吧,相信很多人都不會陌生,如果你還聞所未聞,要么是你已經out了要么就是你從來就沒有關注過Windows 7的這些細節。
要在你自己的.NET應用程序中實現這個效果僅僅靠現有的.NET類庫是不夠的,必須要借助于Windows 7 API的支持。有關在托管代碼中調用Windows 7 API可以看微軟msdn上的一篇文章,。首先需要下載并安裝Windows_API_Code_Pack_Self_Extractor,其實就是一個壓縮包,里面包含了所有的源代碼以及大量的示例,并附有文檔可以查閱,非常詳細。不過使用這些類庫有幾個前提條件:
1. .NET Framework的版本必須是3.5SP1及以上。
2. 運行的環境必須是在Windows 7 RTM及其相關版本,在Vista下部分功能可用。
3. 需要DirectX的支持。
下面是我用這些類庫實現的一個效果,包含了窗體透明玻璃磨砂效果以及任務欄進度條顯示。
實現的代碼很簡單,但前提是你引用了WindowsAPICodePack的相關類庫。
工程中引入了Microsoft.WindowsAPICodePack.dll和 Microsoft.WindowsAPICodePack.Shell.dll。如果想讓窗體呈現透明背景的玻璃磨砂效果,需要將窗體的類繼承自 Microsoft.WindowsAPICodePack.Shell.GlassForm。另外,在worker_ProgressChanged事 件處理方法中,除了更新窗體上的ProgressBar外,我們還通過 TaskbarManager.Instance.SetProgressValue方法來更新Windows任務欄的進度條顯示。
有了這個功能強大的托管類庫的支持,可以非常方便地調用Windows7的API來實現那些非常酷的效果。不過這里 有一個小問題需要解決,當你在你的應用程序中使用了這個類庫并且在Windows7下實現了想要的效果,如果用戶運行的Windows環境是XP或 2003,那么你的程序會拋出異常,類似于下面的截圖。
其實除了Windows API相關的功能外,程序可以繼續工作,因此你需要在程序中考慮各種不同環境下的應用,這個是需要思考的東西。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園