簡體   English   中英

從VS2010升級到VS2013失去了視覺風格

[英]Upgrading from VS2010 to VS2013 has lost the visual styles

我已從Visual Studio 2010升級到Visual Studio 2013。

我還為Visual Studio 2013安裝了多字節MFC庫

自升級以來,視覺樣式不再適用於在MFC對話框中創建的控件。

我將指出,Visual Studio會半正確地預覽(渲染)(錯誤的背景,但通常是正確的控件),只有在運行時(調試或發布等)才會發生這種奇怪的變化。

我在當前解決方案中添加了一個新的MFC應用程序。 當我調試此MFC應用程序時,它將使用視覺樣式進行渲染。

編輯

我遵循了如何在沒有清單的情況下啟用視覺樣式中的建議

這意味着,在MFC項目中,我有一個stdafx.h 由於我使用的版本比VS2005晚(並且沒有清單文件),因此我將以下內容添加到stdafx.h

#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif

編輯

如果有關系,該項目的默認字符集將設置為“ Use Multi-Byte Character Set

編輯

該項目沒有清單文件。 它是嵌入式的。

編輯

比較VS2010版本和VS2013版本的.exe文件(使用記事本打開)時,顯示相同的清單文件,但有1個例外

VS2010

<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings" xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</ms_windowsSettings:dpiAware>

VS2013

<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>

但是,我看不到DPI將如何影響這一點。

編輯

我剛剛意識到此解決方案中還有另一個項目也使用MFC對話框。 同樣的問題仍然存在。

更新

我已經確保新MFC項目和C ++項目之間的項目設置相同(區別是MFC導出到Application,而我將項目導出到.dll)

我已確保項目中的stafx.h與新的MFC項目相同(不同之處在於,我的C ++項目需要ActiveX Control包括)

請注意,清單是嵌入式的,並且是通過屬性窗格創建的。 沒有手動配置的xml文件。

很難猜測項目轉換中可能出了什么問題。 或就此而言,您如何在VS2010中確保為程序生成了正確的清單。 確實需要解決您的問題中的細節。

有點麻煩了,這對於確保EXE文件有一個良好的清單,這些天非常關鍵。 不僅對啟用視覺樣式很重要,它還聲明該程序與UAC兼容。 該清單應始終作為資源嵌入,而不是作為單獨的文件部署。 由鏈接器完成。 您添加的#pragmas僅在鏈接器嵌入清單時才有效。

您可以使用文件>打開>文件>從構建目錄中選擇EXE來仔細檢查此清單是否已正確嵌入。 嘗試使用c:\\​​ windows \\ notepad.exe進行比較。 您應該看到RT_MANIFEST節點,將其打開以查看資源ID#1。 您可以雙擊它以查看內容,但這會導致難以閱讀的十六進制轉儲。 替代方法是右鍵單擊它>導出>保存到擴展名為.txt的文件,然后在文本編輯器中將其打開。

您將需要檢查項目的構建選項,以確保清單生成已啟用。 最好的方法是再次啟動VS,並使用向導創建一個新的MFC項目,使您可以將已知良好的設置與項目的設置進行比較。 要比較的文件位於鏈接器>清單文件和清單工具>所有設置中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM