Подтвердить что ты не робот

Почему форма VB6.0 отображается как форма С#?

У меня есть COM DLL, которая имеет форму. Эта DLL потребляется приложением С#. Я включил Visual Styles для моего приложения С#. Я не хочу, чтобы Visual Styles применялись для формы COM-DLL. Но когда я запускаю свое приложение и lanuch COM DLL-форму, у него есть визуальные стили, применяемые к нему. Как я могу это предотвратить?

Многие люди предлагают использовать манифест. Но, независимо от того, что я вижу в Интернете, все они используют общие элементы управления. 6. Как создать манифест, который использует общие элементы управления 5.0? Некоторые также предлагают использовать ActivationContext. Но, это тоже нуждается в правильном манифестах, который использует общие средства управления 5.0?

Пожалуйста, предложите что-нибудь.

4b9b3361

Ответ 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);