明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

net應(yīng)用程序如何批上XP的外衣?

[摘要]net framework 所提供的開(kāi)發(fā)控件也太少了,也太難看了,自已畫(huà)又費(fèi)時(shí)費(fèi)力也不見(jiàn)得會(huì)得出個(gè)什么好的效果。如果能夠上我們的程序運(yùn)行在XP環(huán)境中能自動(dòng)應(yīng)用XP的主題樣式那就省時(shí)多了,讓MICROSOFT給我們?nèi)ギ?huà)控件!以下是我所所試驗(yàn)過(guò)的解決辦法:1.Application.EnableVis...
net framework 所提供的開(kāi)發(fā)控件也太少了,也太難看了,自已畫(huà)又費(fèi)時(shí)費(fèi)力也不見(jiàn)得會(huì)得出個(gè)什么好的效果。如果能夠上我們的程序運(yùn)行在XP環(huán)境中能自動(dòng)應(yīng)用XP的主題樣式那就省時(shí)多了,讓MICROSOFT給我們?nèi)ギ?huà)控件!以下是我所所試驗(yàn)過(guò)的解決辦法:

1.Application.EnableVisualStyles方法(只適和.NET 1.1及以后版本支持)

在Main方法中執(zhí)行Application.Run(...)方法前先執(zhí)行一下Application.EnableVisualStyles()方法,可以讓接下來(lái)運(yùn)行的應(yīng)用程序中的控件自動(dòng)套用XP的樣式。不過(guò)有幾點(diǎn)要注意:

所有控件都必須保持預(yù)設(shè)的狀態(tài),不能改變其邊框樣式及背景顏色等屬性.如果有System選項(xiàng)的樣式屬性(如Button的FlatStyle)則必須選擇System;

此方法在WIIN2003中可以完全正常運(yùn)行,但在WIN XP中工具條上的圖標(biāo)會(huì)不能顯示.(這個(gè)也許是XP的BUG,用下種方法可以解決這個(gè)問(wèn)題);

2.加入manifest文件(適合所有WINDOWS應(yīng)用程序)

在執(zhí)行文件相同目錄中加入一個(gè)yourApplicationName.exe.manifest的XML文件,可以迅速實(shí)現(xiàn)我們的需求,文件內(nèi)容如下(加下劃線(xiàn)片為需進(jìn)行適當(dāng)改變):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity



version="1.0.0.0"

processorArchitecture="X86"

name="CompanyName.ProductName.YourApp"

type="win32"

/>

Your application description here.



type="win32"

name="Microsoft.Windows.Common-Controls"

version="6.0.0.0"

processorArchitecture="X86"

publicKeyToken="6595b64144ccf1df"

language="*"

/>




我已用這種方法改變很多不同的應(yīng)用程序,都取得了成功。不過(guò)只能套用那些保持著Windows預(yù)設(shè)屬性的控件。它的實(shí)現(xiàn)原理是Windows中所有控件都是交給一個(gè)ComCtl32.dll的組件來(lái)畫(huà)的。XP以前的最高版本是5.0,XP中帶了一個(gè)6.0的ComCtl32.dll,我們以上所做的目的就是通知應(yīng)用程序采用t.6.0的ComCtl32來(lái)展示控件.