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

Ada*_*esh 37 c# vb6 winforms

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

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

请提出建议.

Pet*_*man 3

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

SetWindowTheme( hwnd, "", "" );
Run Code Online (Sandbox Code Playgroud)

我相信您必须 P/Invoke API。定义如下:

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(
   IntPtr hWnd,
   String pszSubAppName,
   String pszSubIdList);
Run Code Online (Sandbox Code Playgroud)