

我是覺得這種技巧很髒,這根本是 Windows 設計不良所謂 dll 地獄的遺毒。
因為系統的 common control dll 經常被各種安裝的軟體亂覆蓋
不同版本之間又有許多不相容,因此造成軟體間大量的衝突
某些軟體使用新版的 common control,某些使用舊版,
新舊版不全相容,而他們的檔名和安裝路徑都完全一樣,真要命!
結果造成後來一些 GUI library (例如 MFC) 內部花不少程式碼
在檢查現在使用的到底是哪一版的 common control,來避免這些不相容
不但要避免不相容,還要針對有已知bug的特定版本用一些"撇步"避免問題
為了稍微改善這個可怕的狀況,M$ 想出利用 Assembly (非指組語),來讓不同版本的同一 dll 共存,
應用程式利用 manifest 來指定,可要求使用特定版本的 common control dll
xp-style 支援包含在 common control 6.0,所以必須透過 manifest 來指定載入 6.0 版的 commctl32.dll,
而不載入預設的舊版 5.0,就會有新式的外觀。 這不是什麼神奇的技巧,
只是載入了另一個 dll 而已
BTW, manifest 除了可用同名的 .manifest 檔案外加,
也可以用 resource 的形式加入到 exe 檔 (resource type 24)