私は、(最近) 主に WinForms アプリで使用される ActiveX コントロールを開発しています。
ActiveX コントロールには「プロパティ ページ」ダイアログがあり、AxHost クラスの ShowPropertyPages メソッドを使用してプログラムで表示できます。これは、コントロールのプロパティを編集するために Visual Studio で表示できるカスタム UI です。
このプロパティ ページ ダイアログには、ImageList を使用してリスト項目の横にアイコンを表示する ListBox コントロールが含まれています。これらのアイコンは、32 ビットのアルファ混合ビットマップです。これらを正しく表示するには、COMCTL32.DLL のバージョン6.0以降を使用する必要があります。
残念ながら、WinForms アプリを実行すると、 COMCTL32.DLL バージョン5.xxxが読み込まれて使用されます。その結果、プロパティ ページ ダイアログが表示されると、アイコンの見栄えが悪くなります (半透明の領域が黒一色で表示されます)。
私の質問は、プロセスが何を使用しているかに関係なく、ActiveX コントロールのプロパティ ページ UI 内から COMCTL32.dll バージョン 6.0 以降を確実に使用できる方法はありますか? または、ホスト プロセスにバージョン 6.0 を使用させることはできますか? (そうではないと思います。なぜなら、ホスト プロセスが、ActiveX コントロール内のどのコードよりも前に、COMCTL32.DLL を既にメモリにロードしている可能性があるからです。
この Web ページでは、COMCTL32 6.0 を使用するいくつかのシナリオについて説明していますが、私がいる状況については説明していません。