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