blog นี้สำหรับคนใช้ VS.NET โดยเฉพาะเลยครับ ลองดูสองภาพนี้เปรียบเทียบ
With .NET Manifest (compiled with Sharpdevelop)
Without .NET Manifest (compiled with Visual Studio .NET 2003)

ภาพแรกนั้นผมคอมไพล์โดยใช้ #Dev 1.1 จะเห็นว่า Progress Bar และ Calendar ดูสวยกว่าภาพที่สองซึ่งคอมไพล์ด้วย VS.NET 2003

ปกติผมก็จะใช้ #Dev เป็น IDE ในการเขียน .NET อยู่แล้ว จึงไม่ได้สังเกตเห็นความแตกต่างข้อนี้ จนแต่พอได้มาใช้ VS.NET มาเขียนโปรแกรมเป็นบางครั้ง จึงได้สังเกตว่าทำไม Progress Bar ถึงมีหน้าตาแปลก ๆ จตอนแรกก็คิดว่ามีซักโปรแกรมแอบทำอะไรในตอนคอมไพล์ ใจึงลองเขียนโปรแกรมแบบเดียวกัน โดยตั้งค่าให้เหมือนกัน วาง control ที่เดียวกัน กำหนด Property ให้เหมือนกันทุกอย่าง แล้วลองใช้ ildasm ลอง disassembly ออกมาเป็น MSIL ดู ก็ปรากฏว่า ผลลัพธ์ก็เหมือนกันอีก แล้วผมก็บังเอิญเห็นว่ามีสิ่งแตกต่างกันในโฟลเดอร์ output ของทั้งสองตัว ก็คือ โฟลเดอร์ของโปรแกรมที่คอมไพล์ด้วย #Dev มีไฟล์นี้อยู่
Manifest file

โดยไฟล์ทางขวา เป็นไฟล์ XML ธรรมดา ซึ่งมีเนื้อหาดังนี้

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

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="X86"
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
</assembly>

วิธีทำให้ WinForm แสดงผลสวยงามก็ไม่ยากครับ แค่สร้างไฟล์ *.exe.manifest ซึ่งมีเนื้อหาแบบข้างบนนี้ไปวางไว้ที่เดียวกับ exe นั้นและตั้งชื่อให้เหมือนกับไฟล์ exe นั้น

update:แถมลิ้งค์ให้อีกอัน มีคนอธิบายว่ามันเกิดอะไรขึ้น Using a Manifest to get XP style controls.

ps: สาดดดดดด

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

ง่าละเอียดจริงๆ ครับพี่ ไม่เคยรู้มาก่อน
สาดม่าง

#1 By P.S. on 2006-04-13 19:12


ร้อนจิงๆเลยวุ๊ย อิอิ

#2 By #G~nap# on 2006-04-13 19:29



สาดๆ

#3 By ฟิวส์ on 2006-04-13 19:45

มันง่ายขนาดนั้นเลย....
สาดดดดดดด

#4 By ไอ้แพท.. on 2006-04-13 21:03

-"- แผ่น VS หาย เซ็งจิต...
สุขสันต์วันสงกรานต์นะครับ ขอให้ปีใหม่(ไทย)นี้มีความสุขมาก ๆ น่อ
trick นี้เจ๋งๆๆ

#6 By plynoi แว่วศรี on 2006-04-13 22:31

ยังไม่มีวาสนาได้จับ .NET เลยผม


ช่วยกัันสาดครับ

#7 By dionysos.exe on 2006-04-14 11:19

อยากมี .Net เล่นมั่ง
มีข่าวลือว่าที่เกษตรฯ แจก
สงสัยต้องไปเล่น IT Square ;-)

#8 By veer on 2006-04-14 12:04

เทคนิคนี้ใช้กับ VB6 ได้ด้วยนะ แต่ต้องเรียก API บางตัวก่อนด้วยนิดหน่อย

สาดซะ

#9 By NinkungZ on 2006-04-15 01:09

แสดดดดด เจ๋งดีแฮะ

#10 By ZOMBIE on 2006-04-15 15:27

c188e8d69278bd8132c1 5f0cd5f9

#11 By (63.99.92.8 /unknown) on 2006-09-30 10:17

เพิ่งรู้เช่นกัน

#12 By Ran (203.170.247.53) on 2006-10-03 12:09

รู้มานาน แล้ว สาดดดดดดดดดดดดดดดดดดดดดดดดดดด

#13 By ตั๋ง (58.64.126.35) on 2006-11-03 17:11

เจ๋ง สาด

#14 By สปายชาเขียว on 2007-04-14 20:20