![]() |
Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Liste der Anhänge anzeigen (Anzahl: 3)
Hi zusammen,
ich stehe vor einem Rätsel. Ich habe ein OCX, das in eine MFC-Anwendung geladen werden kann. Die Anwendung hat ein eigenes Skinning (Name/Hersteller ist CodeJock). Das OCX wird zunächst ohne Probleme geladen und dargestellt. Wenn ich aber aus dem OCX ein TForm erzeugen und anzeigen möchte dann bekomme ich das Phänomen aus dem Anhang, es wird nicht vollständig gezeichnet, und der Rahmen ist weder geskinned noch gethemed. Die Komponenten auf der Form sind aber sehr wohl gethemed. Das Fenster bekomme ich komplett gezeichnet, wenn ich im OnResize des Fensters SetWindowRgn mit den gewollten Infos füttere. Es siht dann wie Bild zwo aus. Dem geneigten Leser/Experten fällt natürlich sofort der extrem dicke Rand auf. BorderWidth ist auf 0... JEtzt das i-Tüpfelchen: Ein TaskDialog zeichnet unter den gleichen Bedingungen zum Beispiel ein komplettes geskinntes Fenster (Bild3). Weiss jemand was da los ist, bzw. wie das zu fixen geht? Hier noch mal kurz die Rahmenbedinungen: Windows 7 mit eingeschaltetem Aero Exe mit Xp-Manifest und eigenem Skinning OCX aus D2007 mit weiterem TForm Sherlock |
AW: Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Ich hoffe du weißt das du mehr machen mußt als NUR! das Manifest einzubinden.
Ohne das initialisieren der CommonControls wirst du in dem fall keine änderung der Fenster erreichen. Das es in der Environment von Delphi funktioniert liegt wohl daran das Delphi selbst seine Designerumgebung initialisiert. Also mal InitCommonControls aufrufen wenn möglich direkt am anfang deines projekts.
Delphi-Quellcode:
Nur dann wird das Manifest auch ausgewertet.
{$EXTERNALSYM InitCommonControls}
procedure InitCommonControls; stdcall; external 'COMCTL32.DLL' Name 'InitCommonControls'; gruss |
AW: Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Danke für die Antwort. Nein, das wusste ich tatsächlich nicht. War bei eigenständigen Exen, bisher auch nie nötig. Wie auch immer, es hat keine Besserung gebracht. :(
Zum Verständnis was ich getan habe: Ich habe ein VCL-Form dem Projekt hinzugefügt. Dieses hat
Delphi-Quellcode:
bekommen, weil ich nur innerhalb des Fenster was gezeichnet bekomme, den eigentlich Rahmen hab ich bisher gar nicht übermalen können.
BorderStyle = bsNone
Dann hab ich im OnPaint dieses Fensters eben genau das, was ich oben schon gepostet habe gemacht. Ich habe auch andere Parts probiert, WP_FRAME zum Beispiel...aber das hat überhaupt nix sichtbares bewirkt. Es ist echt frustrierend, daß die Controls gekinned/gethemed werden, aber nicht der Fensterrahmen. Wenns umgekehrt wäre,käme ich viel besser mit zurecht. :twisted: Sherlock |
AW: Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Zitat:
Da mußt du die Borderstyle nicht verändern. Bei meiner Skinengine funktioniert das ohne probleme allerdings ist diese NONVCL.. Diese lade ich hier aber nicht mehr hoch. Sorry! Ich denke mal das in der OCX die initialisierung nicht richtig eingebunden ist.. also wenn alle Controls Button usw.. nicht funktionieren unter Win7. Lade mal die exe mit Borderstyle hier hoch ich schaue mal ob das manifest auch richtig eingebunden wurde. gruss |
AW: Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Ich habe zwischenzeitlich eine andere Lösung. Dadurch, daß alle Controls innerhalb des Forms den Style mitbekommen, muss ich mich ja "nur" um den Fenstertitel kümmern. Dafür gibt es aber eine Komponente von TMS, den ADVToolBarPager. Jetzt sieht das so aus, wie gewollt.
Ist zwar keine unbedingt saubere Lösung, aber akzeptabel....vor allem in Anbetracht dessen, daß ich dafür eigentlich gar keine Zeit habe. Die EXE bzw. das OCX darf ich leider hier nicht hochladen, ich bitte um Verständnis, es geht da um Firmendinge...:roll: Ich danke Dir für die Lösungsansätze, und Dein Angebot mal reinzuschauen! Gruß, Sherlock |
AW: Fenster eines OCX in einer Anwendung die eigenes Skinning verwendet
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz