37

我有一个具有表单的 COM DLL。此 DLL 由 C# 应用程序使用。我为我的 C# 应用程序启用了视觉样式。我不希望将视觉样式应用于 COM DLL 的表单。但是当我运行我的应用程序并启动 COM DLL 的表单时,它应用了视觉样式。我将如何预防?

许多人建议使用清单。但是,无论我在互联网上看到什么清单,它们都使用通用控件 6. 如何创建使用通用控件 5.0 的清单?有些人还建议使用 ActivationContext。但是,这也需要使用通用控件 5.0 的正确清单,对吗?

请提出一些建议。

4

1 回答 1

3

如果您有窗体的窗口句柄(来自 COM DLL),那么您可以使用 Win32 API 禁用该窗体上的视觉样式:

SetWindowTheme( hwnd, "", "" );

我相信你必须 P/Invoke API。这是定义:

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(
   IntPtr hWnd,
   String pszSubAppName,
   String pszSubIdList);
于 2013-01-17T16:22:11.403 回答