我有一个COM DLL,它有一个表单.此DLL由C#应用程序使用.我为我的C#应用程序启用了Visual Styles.我不希望视觉样式应用于COM DLL的表单.但是,当我运行我的应用程序和lanuch COM DLL的表单时,它应用了视觉样式.我该如何预防呢?
很多人建议使用清单.但是,无论我在互联网上看到什么清单,它们都使用通用控件6.如何创建使用通用控件5.0的清单?有些人还建议使用ActivationContext.但是,那也需要使用通用控件5.0的正确清单吗?
请提出建议.
如果您有窗体的窗口句柄(来自 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)