Я разрабатываю элемент управления ActiveX, который (в наши дни) используется в основном в приложениях WinForms.
Элемент управления ActiveX имеет диалоговое окно «страница свойств», которое можно программно отобразить с помощью метода ShowPropertyPages в классе AxHost. Это пользовательский интерфейс, который можно вызвать в Visual Studio для редактирования свойств элемента управления.
Этот диалог страницы свойств содержит элемент управления ListBox, который использует ImageList для отображения значков рядом с элементами списка. Эти значки являются 32-битными альфа-смешанными растровыми изображениями. Чтобы они отображались правильно, необходимо использовать версию 6.0 или выше COMCTL32.DLL.
К сожалению, когда я запускаю свое приложение WinForms, оно загружается и использует версию COMCTL32.DLL 5.xxx . В результате при отображении диалогового окна страницы свойств значки выглядят плохо (полупрозрачные области отображаются сплошным черным цветом).
Мой вопрос: есть ли способ убедиться, что я использую COMCTL32.dll версии 6.0+ из пользовательского интерфейса страницы свойств элемента управления ActiveX, независимо от того, какой процесс используется? Или я могу заставить хост-процесс использовать версию 6.0? (Я думаю, что нет, потому что я думаю, что хост-процесс, возможно, уже загрузил COMCTL32.DLL в память до того, как какой-либо код в элементе управления ActiveX.
Эта веб-страница охватывает некоторые сценарии использования COMCTL32 6.0, но не ситуацию, в которой я нахожусь.