2016-01-29 40 views
0

我有一個.NET C#程序引用了一些C++/CLI dll,這些dll可以啓動一些傳統的MFC表單/對話框。但是,當這些對話框啓動時,它們不會啓動當前的Windows主題,也就是視覺樣式。他們打開爲舊的Windows 98風格。將視覺樣式應用於從C#.net程序調用的MFC對話框

如果我們通過包含在Application Exe項目的stdafx.h中的pragma comment的原始C++/CLI項目來啓動這些對話框,將以可視樣式啓動。

我已經在引用的Microsoft文章中嘗試了幾種關於將視覺樣式應用於C++項目的建議。然而,他們都沒有工作,因爲我認爲這篇文章的目標是一個純粹的C++解決方案,而不是一個引用舊的MFC對話框的混合C#解決方案。

tl; dr可以從C#程序啓動MFC對話框,但對話框沒有可視化樣式。

回答

1

「如果您希望應用程序使用可視化樣式,則必須添加應用程序清單或編譯器指令,指示應使用ComCtl32.dll版本6(如果可用)。」

來源:https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175(v=vs.85).aspx

的應用程序清單應該工作。

+0

嗨丹,感謝迴應,但我已經嘗試過應用程序清單。正如我在原文中所提到的,我一直在這個鏈接,並嘗試了所有建議。當我添加應用程序清單時,我的C#應用​​程序不能編譯。它抱怨此錯誤: 錯誤找不到文件 'Microsoft.Windows.Common - 控制,版本= 6.0.0.0,文化= *,公鑰= 6595b64144ccf1df,ProcessorArchitecture用於= *,類型= win32的' 的我發現唯一的解決方案就是將其註釋掉,這打破了將其添加到應用程序清單的目的。 –

+0

因此,將ComCtl32.dll版本6或更高版本添加到您的項目引用。 (您運行的是哪個版本的Visual Studio,在哪個版本的Windows上運行?) 至少,您應該能夠將獨立的XML清單文件放在可執行文件的旁邊,與可執行文件的名稱相同,並帶有「 .manifest「添加到最後。 –

相關問題