VC6無負擔實現XP風格介面

2021-05-12 18:48:41 字數 2581 閱讀 2946

vc

6無負擔實現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。

然後在vc

中新建乙個

(exe

)工程,

document/view

或dialog

均可,接著把

xpstyle.manifest

複製到工程所在目錄,再用記事本或其它文字編輯工具手動修改工程目錄下的資源檔案(

.rc

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

系統下才可以。

VC無負擔實現XP風格介面

有件事情必須說一下,按照上面的方法,test.exe必須先呼叫initcommoncontrols函式 已經廢除,不建議使用 或者initcommoncontrol 函式從comctl32.dll中註冊元件類。這一步在vb中是必須的,但是在vc mfc程式 中,我們好像並沒有呼叫這個函式,可是編譯後...

VC無負擔實現XP風格介面

關於讓自己的程式介面實現xp風格這個問題,在網上的討論很多,大多數的作法都是寫乙個.manifest檔案,然後將檔名改一下,比如.exe檔案為test.exe,就將這個.manifest檔案改名成test.exe.manifest,並將其和test.exe放在同乙個目錄裡,這樣test.exe在xp...

VC中實現介面XP風格

只需要在stdafx.h裡加入如下語句 if defined m ix86 pragma comment linker,manifestdependency type win32 name microsoft.windows.common controls version 6.0.0.0 proce...