2 Stimmen

Kann ich mehr als eine COMCTL32.dll in einen Prozess laden?

Ich entwickle ein ActiveX-Steuerelement, das (heutzutage) hauptsächlich in WinForms-Anwendungen verwendet wird.

Das ActiveX-Steuerelement verfügt über ein Dialogfeld "Eigenschaftsseite", das programmgesteuert mit der Methode ShowPropertyPages der Klasse AxHost angezeigt werden kann. Dies ist die benutzerdefinierte Benutzeroberfläche, die in Visual Studio aufgerufen werden kann, um die Eigenschaften eines Steuerelements zu bearbeiten.

Dieser Eigenschaftsdialog enthält ein ListBox-Steuerelement, das eine ImageList zur Anzeige von Symbolen neben den Listenelementen verwendet. Bei diesen Symbolen handelt es sich um 32-Bit-Bitmaps mit Alpha-Blending. Damit sie richtig angezeigt werden, muss die Version 6.0 oder höher von COMCTL32.DLL verwendet werden.

Wenn ich meine WinForms-Anwendung ausführe, wird leider die Version COMCTL32.DLL geladen und verwendet 5.xxx . Daher sehen die Symbole bei der Anzeige des Eigenschaftsdialogs schlecht aus (die halbtransparenten Bereiche sind schwarz gezeichnet).

Meine Frage ist: gibt es eine Möglichkeit, die ich sicherstellen kann, um COMCTL32.dll Version 6.0+ von innerhalb der ActiveX-Steuerelement-Eigenschaft-Seite UI zu verwenden, unabhängig davon, was der Prozess verwendet wird? Oder kann ich den Host-Prozess zwingen, Version 6.0 zu verwenden? (Ich denke nicht, weil ich denke, dass der Host-Prozess COMCTL32.DLL bereits in den Speicher geladen haben könnte, bevor der Code im ActiveX-Steuerelement.

Diese Webseite behandelt einige Szenarien für die Verwendung von COMCTL32 6.0, aber nicht die Situation, in der ich mich befinde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X