我正在开发一个 ActiveX 控件,它(这些天)主要用于 WinForms 应用程序。
ActiveX 控件有一个“属性页”对话框,可以使用 AxHost 类的 ShowPropertyPages 方法以编程方式显示该对话框。这是可以在 Visual Studio 中用于编辑控件属性的自定义 UI。
此属性页对话框包含一个 ListBox 控件,该控件使用 ImageList 在列表项旁边显示图标。这些图标是 32 位 alpha 混合位图。为了使这些正确显示,必须使用6.0或更高版本的 COMCTL32.DLL。
不幸的是,当我运行我的 WinForms 应用程序时,它会加载并使用 COMCTL32.DLL version 5.xxx。结果,当显示属性页对话框时,图标看起来很糟糕(半透明区域以纯黑色绘制)。
我的问题是:有什么方法可以确保在 ActiveX 控件的属性页 UI 中使用 COMCTL32.dll 版本 6.0+,而不管进程使用的是什么?或者我可以强制主机进程使用 6.0 版吗?(我认为不是,因为我认为宿主进程可能已经在 ActiveX 控件中的任何代码之前将 COMCTL32.DLL 加载到内存中。
该网页涵盖了使用 COMCTL32 6.0 的一些场景,但不是我所处的情况。