在Windows XP 下,如果選擇了“視覺效果”屬性頁面的“在視窗和按鈕上使用視覺樣式”選項的話,Windows會漂亮許多。而在VS.2003下建立的MFC項目預設的介面卻非常普通,和Windows 98差不多,其實,只要作一點點的修改就可以讓我們的應用程式介面大為改觀!
具體的步驟如下:
1,以編輯方式開啟項目的資源檔(.rc);
2,如果在其中發現如下的語句:
#ifdef _UNICODE
IDR_MANIFEST RT_MANIFEST "res//bb.manifest"
#endif
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
IDR_MANIFEST 在Resource.h中就是被定義成CREATEPROCESS_MANIFEST_RESOURCE_ID,而CREATEPROCESS_MANIFEST_RESOURCE_ID 在 Winuser.h 中的定義如下:
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
3,重新build,運行
現在可以看到區別了吧,跟XP的介面風格是一樣的了!
對於第2步,有必要解釋一下。這裡主要是添加了一個RT-MANIFEST資源,YourApp.manifest
在項目建立之後就存在了,它的內容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApp"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
這個檔案就是說本應用程式使用的是Microsoft的通用控制項陳列庫ComCtl32.dll version 6,預設的使用version 5,這就是問題的原因所在了。
如果你的程式中使用了第三方擴充、外掛程式、DLL,或者還有其它情況,則處理方法稍微有點不一樣,具體的請參考MSDN 標題為 Using Windows XP Visual Styles的文章。
則注釋掉 #ifdef _UNICODE和#endif,如果沒有,則這一句: