2012-10-04 43 views
1

當我嵌入視覺樣式體現在我的計劃是這樣的:Win32視覺樣式向後兼容性?

// Embed visual style XML manifest 
#pragma comment(linker,       \ 
    "\"/manifestdependency:type='Win32'"   \ 
    " name='Microsoft.Windows.Common-Controls'" \ 
    " version='6.0.0.0'"      \ 
    " processorArchitecture='*'"    \ 
    " publicKeyToken='6595b64144ccf1df'"  \ 
    " language='*'\""       \ 
) 

// Link common controls library 
#pragma comment(lib, "ComCtl32.lib") 

這是否意味着我的程序只能在Windows XP上運行?或者,如果視覺樣式不在電腦上,他們只會使用操作系統的默認樣式?我問,因爲我啓用了Visual Studio 2008開發的程序中的視覺樣式,我想知道它可以運行的最早版本的Windows。我應該檢查WINVER以查看他們是否運行支持視覺樣式的版本?如果是這樣,我應該在預處理器中檢查哪個版本號。我想知道的另一件事是,沒有視覺樣式,我可以運行我的程序的最低版本是什麼?

回答

6

這是否意味着我的程序只能在Windows XP上運行?或者如果視覺 款式不在電腦上,他們只會使用操作 系統的默認樣式?

後者是真實的documentation定義確切行爲(重點是我的):

如果你希望你的應用程序使用視覺樣式,您必須添加一個 應用程序清單或編譯器指令時如果可用,則應使用 ComCtl32.dll版本6

同一頁面中的另一部分描述了一些您應該注意的向後兼容性問題:Making Your Application Compatible with Earlier Versions of Windows。在視覺樣式,它指出:

大部分的視覺風格建築的設計,使之簡單 繼續出貨產品在早期版本的Windows是做 不支持改變控件的外觀。

4

這不是問題。清單只是告訴Windows你需要公共控件DLL的第6版。存儲在並行緩存(c:\ windows \ winsxs)中的文件,而不是存儲在c:\ windows \ system32中的舊文件。並行緩存是一個DLL地獄對抗措施,它可以存儲具有相同名稱的不同版本的DLL。

該清單對早期版本的Windows沒有影響,這些版本不知道有關清單的任何內容,所以不知道如何查找它們。