为什么VB6.0表单显示为C#表单?

时间:2012-11-28 14:28:50

标签: c# winforms vb6

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

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

请提出建议。

1 个答案:

答案 0 :(得分: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);