Почему форма VB6.0 отображается как форма С#?
У меня есть COM DLL, которая имеет форму. Эта DLL потребляется приложением С#. Я включил Visual Styles для моего приложения С#. Я не хочу, чтобы Visual Styles применялись для формы COM-DLL. Но когда я запускаю свое приложение и lanuch COM DLL-форму, у него есть визуальные стили, применяемые к нему. Как я могу это предотвратить?
Многие люди предлагают использовать манифест. Но, независимо от того, что я вижу в Интернете, все они используют общие элементы управления. 6. Как создать манифест, который использует общие элементы управления 5.0?
Некоторые также предлагают использовать ActivationContext. Но, это тоже нуждается в правильном манифестах, который использует общие средства управления 5.0?
Пожалуйста, предложите что-нибудь.
Ответы
Ответ 1
Если у вас есть дескриптор окна для формы (из библиотеки 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);