最近需要實現xp風格介面,在網上找了一下,發現使用manifest檔案最方便。
下面為轉貼的別人的如何使用manifest檔案實現xp風格介面文章,感覺很不錯。所以貼在此處
關於讓自己的程式介面實現xp風格這個問題,在網上的討論很多,大多數的作法都是寫乙個.manifest檔案,然後將檔名改一下,比如.exe檔案為test.exe,就將這個.manifest檔案改名成test.exe.manifest,並將其和test.exe放在同乙個目錄裡,這樣test.exe在xp或2003(必須啟動themes服務)下執行時就會呈現xp介面風格。
有件事情必須說一下,按照上面的方法,test.exe必須先呼叫initcommoncontrols函式(已經廢除,不建議使用)或者initcommoncontrol***函式從comctl32.dll中註冊元件類。這一步在vb中是必須的,但是在vc(mfc程式)中,我們好像並沒有呼叫這個函式,可是編譯後的程式為什麼還能實現xp風格呢?原因是mfc替我們做了這件事。如果我們是讓mfc註冊的視窗類,它會呼叫_afxinitcommoncontrols函式,而_afxinitcommoncontrols的主要操作就是把comctl32.dll裝載進來,然後判斷.dll檔案中有沒有initcommoncontrol***函式,如果有就呼叫,沒有則呼叫initcommoncontrols,到此真相大白。可能有人和我一樣,看著以「afx」開頭的視窗類名稱很不舒服,於是喜歡自己註冊視窗類,但在我們註冊自己的視窗類時一定要確保呼叫過initcommoncontrol***函式,這點一定要記得,如果忘記的話你將會看到乙個空白的視窗。
說了這麼多,有點跑題了,呵呵。現在回到正題。我上面提到的方法很多**上都有介紹,但是卻有乙個致命的缺點,就是必須有那個.manifest檔案如影隨形,exe檔案到哪,它就得到哪,這當然是我們不願意看到的。有沒有辦法能把它「合」到exe檔案中呢?答案是肯定的,這也正是本文題目中「無負擔」三個字的意思。
當然了,那個.manifest檔案還是要有的,只不過不是和.exe檔案放在同一目錄中,而是把它放到資源檔案中,編譯後生成.res檔案,link後自然就和.exe檔案「合」到一起了。
首先,請出.manifest檔案:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
name="xp style manifest"
processorarchitecture="x86"
version="1.0.0.0"
type="win32"/>
type="win32"
name="microsoft.windows.common-controls"
version="6.0.0.0"
processorarchitecture="x86"
publickeytoken="6595b64144ccf1df"
language="*"
大家也看到了,這其實是乙個xml檔案,開啟記事本,複製上面的內容,然後存檔,檔名任意,這裡我存為xpstyle.manifest。
1 24 「xpstyle.manifest」
在vc中編譯並連線工程生成.exe可執行檔案,執行一下看看。
就這麼簡單?就這麼簡單。 :d
這裡我再多解釋一下,最後加上的那一行,「1」代表資源id,必須是「1」。「24」代表資源型別,我想我們對rt_accelerator、rt_bitmap、rt_menu、rt_string等資源都非常熟悉,而「24」實際上是rt_manifest。最後面引號中的東西我就不再囉嗦了。
好了,編譯後的這個.exe檔案拿到哪都可以,都是xp風格的介面,不用再依賴.manifest檔案了。哦,當然了,必須在xp或2003系統下才可以。
H5使用Manifest離線快取
1.mime type宣告 以apache為例,我們需要在httpd.conf中加上 2.在html檔案中引入manifest檔案 3.manifest檔案語法 cache manifest version 1.0 cache style default.css images sound icon....
將XP風格檔案manifest合併到資源檔案
使用.manifest檔案不費任何力氣就可以在xp系統裡實現xp風格的控制項,但是這樣做有一點不方便的地方就是manifest必須放到exe所在目錄,而且要將manifest檔案改名為 exe.manifest格式,如下做法可以將manifest檔案放到資源檔案中,編譯後生成.res檔案,link後...
manifest檔案導致,網狐無法正常工作問題
網狐棋牌,大多數都是舊版本的 而且gameengine.lib庫沒有 gameengine.lib是vs低階版本開發的,如果用vs更高版本開發程式時,生產debug版程式本無法正常工作.將以下 加入到stdafx.h中即可,可解決當前在vs2008版本開發的問題.鏈結 pragma comment ...