預設情況下,vs.net提供的控制項即使在winxp下執行,也不能獲得xp風格的介面,因此,fotovision裡加入了乙個manifest檔案。這是乙個xml檔案,這個檔案明確指定了窗體控制項使用的是版本為6.0的comctl32.dll。這個dll檔案中包含了一些新的控制項以及一些控制項的新特性,它最大的好處是支援控制項外觀的改變。
一般將manifest檔案放在可執行檔案目錄下,命名方法為:《可執行檔名》.exe.manifest,因此我們可以在bin目錄下看到fotovision.exe.manifest。專案中就是通過manifest檔案下的thememanifest.xml和thememanifest.cs檔案實現的。前者就是能夠讓應用程式具有xp效果的manifest檔案,後者是乙個工具類,用於提取thememanifest.xml的內容,並寫入到可執行檔案所在的目錄下。因此,當程式第一次執行時,會在同一目錄下生成fotovision.exe.manifest。
thememanifest.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
version="1.0.0.0"
processorarchitecture="x86"
name="photovision"
type="win32"
/>
.net control deployment tool
type="win32"
name="microsoft.windows.common-controls"
version="6.0.0.0"
processorarchitecture="x86"
publickeytoken="6595b64144ccf1df"
language="*"
/>
對這個檔案來說,在不同的應用程式中,只需要修改assemblyidentity中的name的屬性,其他都是一樣的,因此可以直接複製過去使用。
thememanifest.cs
這是乙個工具類,用於提取thememanifest.xml的內容,並寫入到可執行檔案所在的目錄下,並且這也解決了當可執行檔案拷貝到其他目錄下執行時無法具有xp外觀的問題。
///
/// thememanifest 的摘要說明。
///
public sealed class thememanifest
private thememanifest()
public static bool create()
catch(system.exception ex)
} }
並且在mainform 中修改main()函式如下:
///
/// 應用程式的主入口點。
///
[stathread]
static void main()
else
run();//manifest檔案已經存在,直接執行
mutex.releasemutex();//釋放 mutex 一次。 }
else
} static void run()
} 下圖就是使用了xp風格的fotovision系統執行後的情形:
FotoVision學習手記 3
aboutform十分簡單,重寫了繼承自system.windows.forms.form的onload方法,而不採用aboutform load來響應窗體的load事件。using system using system.drawing using system.collections using...
JavaScript學習手記2
1.物件 在js裡所有的事物都是物件 字串 數值 陣列 函式 允許自定義物件 物件包含屬性和方法。2.自定義物件 定義並建立物件例項,使用函式來定義,然後建立新的物件例項 3.string物件 用於處理字串 可以使用單引號也可以是雙引號 indexof 在字串中查詢字串,返回開始位置 match 內...
Delphi學習手記
本人一直使用c buider,並開發了乙個 商關係管理 的三層應用系統.現公司要求使用delphi,沒辦法只有重新學習pascal語言.便記錄學習的過程,那就叫delphi學習手記吧.1 好象inherit form不行,如果想覆蓋上邊的方法,重寫事件或函式,竟然報錯,不懂先,是不是inherit不...