C# - Windows XP stílusú Form-ok készítése

forráskód letöltése
Visual Studio.NET-el készült Windows-os alkalmazás a Windows 2000-ben megszokott külsővel jelenik meg még akkor is, ha már Winodws XP-n futtatjuk. Ennek oka, hogy alapértelmezésben a Comctl5.dll kerül felhasználásra a Comctl6.dll rendszerállomány helyett, mely felelős az egyes kontrolok külalakjáért. Abban az esetben ha rávesszük az alkalmazásunkat, hogy az újabb verziójú DLL-t használja, máris új külsővel jelenik meg programunk.
A megoldás két lépésből áll: az elsőben minden olyan kontrolnál amelynél találunk FlatStyle nevű property-t, annak az értékét állítsuk át System-re.
A második lépés, hogy az alkalmazásunkat rávegyük az XP-s külső használatára az az, hogy készítünk egy ún. manifest állományt, melyben leírjuk, hogy az alkalmazásnak milyen DLL-t kell használnia. Ez az állomány egy XML típusú állomány lesz és neve egyezik a készítendő EXE-vel, csak az EXE kiterjesztés után még a MANIFEST kiterjesztést tesszük hozzá. Ha tehát van egy Theme.exe nevű alkalmazásunk, akkor a Theme.exe.manifest nevű állományt kell létrehoznunk.
Ennek tartalma az alábbi kell, hogy legyen:
<?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="SoftwareOnline" type="win32" /> 
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> 
    </dependentAssembly>
  </dependency>
</assembly>
Ennek az állománynak minden esetben az adott EXE-vel egy könyvtárba kell kerülnie. Ezen kívül más tennivalónk nincs az alkalmazással, azt ugyanúgy kell elkészítenünk.
Abban az esetben, ha nem szeretnénk az EXE-vel együtt állandóan a MANIFEST állományra is ügyelni, akkor megoldhatjuk azt, hogy ez erőforrásként bekerüljön az EXE-be és ettől kezdve elegendő csak azt szállítanunk más gépekre.
Ez esetben tegyük a következőt: fordítsuk le a kész programunkat, hogy az EXE létrejöjjön. Most a Visual Studio.NET-el nyissuk meg az EXE-t a File - Open - File menüpont kiválasztása után. Az ez után megjelenő ablakban láthatóvá válnak az EXE-ben lévő erőforrások. Kattintsunk most az EXE-n jobb gombbal és válasszuk az Add Resource menüpontot. A megjelenő ablakban kattintsunk az Import gombra, majd keressük elő a már létrehozott MANIFEST állományunkat. Bezárva ezt az ablakot még egy utolsó kérdést kapunk, ahol meg kell határoznunk, hogy az erőforrás milyen típusként legyen kezelve. Ekkor az RT_MANIFEST szöveget gépeljük be.
A változtatás után mentsünk a módosított EXE-t, melynek a jövőben már nem lesz szüksége arra, hogy a MANIFEST állomány mellette legyen, mivel ezt már erőforrásból éri el.
Ha ezek után módosítjuk a programunkat és újra fordítjuk az EXE-t, akkor nem kell újra eljátszani a fenti lépéseket, mivel az erőforrás továbbra is megmarad az EXE-ben.