升级后的 MFC 应用程序看起来仍然很旧
Upgraded MFC application still looks old
我有一个用 VC6 编写的 MFC 应用程序。我已将它升级到 VS2015,它可以构建并运行。该应用程序是一个主 exe,其中包含许多 DLL,其中包含对话框。
但是应用程序仍然看起来像是用 VC6 构建的。 None 的 GUI 组件具有 Windows 7 的外观和感觉,它们看起来仍然是旧样式。
如何使我现有的应用程序看起来更现代?
您至少应该将这一行添加到您的项目中,例如将其添加到 stdafx.h
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
或者将以下内容添加到您的清单文件中:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
所有者绘制控件变得更加复杂。请参阅此参考资料:
Using Visual Styles with Custom and Owner-Drawn Controls
对于 ListView 和 TreeView 控件,您可以调用此函数以获得更现代的外观(尽管它在 Windows 10 中没有任何区别)
SetWindowTheme(m_ListView.m_hWnd, L"Explorer", NULL);
SetWindowTheme(m_TreeView.m_hWnd, L"Explorer", NULL);
* #pragma comment
是 Visual Studio 特定的。其他编译器需要修改manifest文件
还要确保您的链接器设置 ALLOWISOLATION
设置为 'Yes',否则甚至不会考虑清单。
我有一个用 VC6 编写的 MFC 应用程序。我已将它升级到 VS2015,它可以构建并运行。该应用程序是一个主 exe,其中包含许多 DLL,其中包含对话框。
但是应用程序仍然看起来像是用 VC6 构建的。 None 的 GUI 组件具有 Windows 7 的外观和感觉,它们看起来仍然是旧样式。
如何使我现有的应用程序看起来更现代?
您至少应该将这一行添加到您的项目中,例如将其添加到 stdafx.h
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
或者将以下内容添加到您的清单文件中:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
所有者绘制控件变得更加复杂。请参阅此参考资料: Using Visual Styles with Custom and Owner-Drawn Controls
对于 ListView 和 TreeView 控件,您可以调用此函数以获得更现代的外观(尽管它在 Windows 10 中没有任何区别)
SetWindowTheme(m_ListView.m_hWnd, L"Explorer", NULL);
SetWindowTheme(m_TreeView.m_hWnd, L"Explorer", NULL);
* #pragma comment
是 Visual Studio 特定的。其他编译器需要修改manifest文件
还要确保您的链接器设置 ALLOWISOLATION
设置为 'Yes',否则甚至不会考虑清单。