【发布时间】:2012-11-28 14:28:49
【问题描述】:
我有一个带有表单的 COM DLL。此 DLL 由 C# 应用程序使用。我为我的 C# 应用程序启用了视觉样式。我不希望将视觉样式应用于 COM DLL 的表单。但是当我运行我的应用程序并启动 COM DLL 的表单时,它应用了视觉样式。我将如何预防?
许多人建议使用清单。但是,无论我在互联网上看到什么清单,它们都使用通用控件 6. 如何创建使用通用控件 5.0 的清单? 有些人还建议使用 ActivationContext。但是,这也需要使用通用控件 5.0 的正确清单,对吗?
请提出建议。
【问题讨论】:
-
您必须在 vb6 代码中使用 CreateActCtx。这很难做对。在你的 UI 中使用不一致的样式是没有意义的。
-
清单是每个进程的。您需要为您的窗口使用进程外 COM 主机。请注意,某些 DLL 有一些方法可以使用不同的清单,这需要主机应用程序的支持。
-
您可以尝试使 VB6 DLL 中的表单与公共控件 6 清单一起工作。 This VBAccelerator article 是一个很好的起点
-
... 或者只是在 C# 项目中关闭视觉样式,这可能是解决问题的最快方法。我假设您在使用 VB6 表单时遇到了一些问题?
-
您是否面临将视觉样式应用于 VB6 的“黑色控件”错误?解决方法是将“黑色”控件放在图片框上!