XP-Styles in Buttonbar

German support forum

Moderators: white, Hacker, Stefan2

User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

XP-Styles in Buttonbar

Post by *Lefteous »

Bekanntlich wird im Total Commander keine Standard-Toolbar verwendet. Die Buttons auf dem verwendeten, benutzerdefinierten Control sehen auf einem Windows XP-System mit eingeschalteten XP-Styles nicht wie Standard-Toolbar-Buttons aus; benutzen also offenbar keine XP-Styles. Wird das noch engebaut? Dankeschön im Vorraus :)
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48232
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Nein, leider nicht, weil Microsoft ein ziemliches Chaos angerichtet hat mir der dafür nötigen DLL. Bei manchen Windows-Versionen fehlt sie ganz, bei einigen hat es fehlerhafte ältere Versionen etc. Ich müsste die DLL selber installieren, was natürlich wieder zu Problemen mit anderen Programmen führen könnte.
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2ghisler(Author)

schade :-(
CoolWater
Power Member
Power Member
Posts: 739
Joined: 2003-03-27, 16:33 UTC

Post by *CoolWater »

@christian: welche DLL ist das?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48232
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

comctl32.dll , die DLL für die "Microsoft Common Controls".
Author of Total Commander
https://www.ghisler.com
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

Soweit ich weiß muss man um die XP-Styles nutzen zu können die Operation InitCommonControls aus der ComCtl32 aufrufen. Sofern das zutrifft kann Total Commander bei fehlender oder fehlerhafter Comctl32 garnicht ausgeführt werden.
CoolWater
Power Member
Power Member
Posts: 739
Joined: 2003-03-27, 16:33 UTC

Post by *CoolWater »

also unter xp muss diese DLL auf jeden Fall dabei sein, in der Version 6, sonst könnte XP selber keine Themes unterstützen.... Deswegen frag ich mich, wieso die dann fehlerhaft sein soll bzw. fehlen könnte? :roll:

EDIT: @christian: Kannst du in Delphi nicht ne Wrapper-Klasse von dieser DLL erzeugen? Achso, hmm, in Delphi 2 geht das ja evtl. noch gar nicht... :( Naja, Versuch wars wert. :)
Sven
Member
Member
Posts: 111
Joined: 2003-02-10, 21:32 UTC
Location: Varel, Germany
Contact:

Post by *Sven »

Die Lösung besteht darin, die in der UxTheme.dll enthaltenen Funktionen dynamisch zu importieren und zum Zeichnen zu verwenden, wenn die Anwendung unter XP im Theme-Modus läuft. Unter älteren Systemen sowie bei deaktivierten Themes werden die Buttons ansonsten so gezeichnet wie bisher auch.
User avatar
chriss
Senior Member
Senior Member
Posts: 221
Joined: 2003-02-12, 10:17 UTC

Post by *chriss »

hallo

@christian:

und wenn du diese comctl32.dll in tc-verzeichnis mit installierst?

das was du mit den "problemen mit anderen programmen" meinst tritt doch nur dann auf wenn die dlls im system-verzeichnis kopiertst. im eigenen verzeichen darf/kann/wird es keinen stören.
gruß


chriss
Sven
Member
Member
Posts: 111
Joined: 2003-02-10, 21:32 UTC
Location: Varel, Germany
Contact:

Post by *Sven »

Die ComCtl32.dll v6 darf nicht selbst verteilt werden, sie ist nur unter XP verfügbar.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48232
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Doch TC verwendet die comctrl32.dll für andere Dinge als den Toolbar (sofern sie vorhanden ist). Einige Funktionen wie der Toolbar sind aber problematisch.
Die Lösung besteht darin, die in der UxTheme.dll enthaltenen Funktionen dynamisch zu importieren und zum Zeichnen zu verwenden
Das mache ich bereits, z.B. für gewisse Buttons. Beim Toolbar ist das aber aus mehreren Gründen problematisch:
- Microsoft geht sehr verschwenderisch mit dem Platz um - so kleine Buttons sind damit nicht möglich
- Der Toolbar verwendet Halbdurchsichtigkeit und verschiedene Farben für inaktiv, Maus über dem Button etc. Total Commander speichert die Icons des Toolbar in einem Bitmap, damit er sie nicht ständig aus den EXE-Dateien extrahieren muss. Für die XP-Toolbar müsste ich ca. 4 verschiedene Bilder pro Icon abspeichern! Leider habe ich bisher nicht herausgefunden, wie man die Icons selbst in eine Datei speichern könnte.
Author of Total Commander
https://www.ghisler.com
Sven
Member
Member
Posts: 111
Joined: 2003-02-10, 21:32 UTC
Location: Varel, Germany
Contact:

Post by *Sven »

Ich glaube, hier missverstehen wir uns beide. Du kannst Deine Toolbar weiter so zeichnen wie bisher. Die Funktionen aus der UxTheme.dll werden lediglich für das Zeichnen des Hintergrunds (inkl. Rahmen) genommen, die einzelnen Bitmaps werden danach transparent darübergelegt. In den Größen bist Du auch frei, die UxTheme.dll malt den Toolbar-Button so groß oder klein wie Du willst.
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

:D
Last edited by Lefteous on 2003-09-17, 23:52 UTC, edited 1 time in total.
User avatar
Lefteous
Power Member
Power Member
Posts: 9535
Joined: 2003-02-09, 01:18 UTC
Location: Germany
Contact:

Post by *Lefteous »

2ghisler(Author)
Das mache ich bereits, z.B. für gewisse Buttons. Beim Toolbar ist das aber aus mehreren Gründen problematisch:
- Microsoft geht sehr verschwenderisch mit dem Platz um - so kleine Buttons sind damit nicht möglich
- Der Toolbar verwendet Halbdurchsichtigkeit und verschiedene Farben für inaktiv, Maus über dem Button etc. Total Commander speichert die Icons des Toolbar in einem Bitmap, damit er sie nicht ständig aus den EXE-Dateien extrahieren muss. Für die XP-Toolbar müsste ich ca. 4 verschiedene Bilder pro Icon abspeichern! Leider habe ich bisher nicht herausgefunden, wie man die Icons selbst in eine Datei speichern könnte.
Zum Thema Platz: Das würde ich in Kauf nehmen.
Zum Thema Halbdurchsichtigkeit: Bezieht sich diese Aussage auf das Standard Windows Toolbar Control oder auf das selbsterstellte Control, dem möglicherweise auch noch XP-Styles beigebracht werden?
Wäre es denn grundsätzlich möglich, dass Standard-Toolbar-Control zu benutzen oder geht das auch Kompatibilitätsgründen nicht?

2Sven
In den Größen bist Du auch frei, die UxTheme.dll malt den Toolbar-Button so groß oder klein wie Du willst.
ich denke hier meint ghisler, dass ein Toolbar-Button deutlich größer ist als das darauf befindliche Bild, weil ein bestimmter Bereich für den Rand reserviert ist. Vorgabegröße sind hier glaube ich 24 x 22 für den Button bzw. 16 x 15 für das Bild.
Soweit ich das beurteilen kann besteht bei den Buttons des selbstdefinierten Toolbar-Controls, dass Total Commander nutzt kaum ein Unterschied zwischen Button- und Bildgröße.
Hinzu kommt, dass beim Standard-Toolbar-Control die eigentliche Toolbar nochmal ordentlich Platz in der Höhe benötigt.

Wie auch immer: Ich würde diesen Platzverlust hinnehmen.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48232
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

TC verwendet ein einziges nicht durchsichtiges Bitmap fuer den Buttonbar - nicht für jeden Button ein Bitmap! Der ganze Toolbar kann so auf einmal gezeichnet werden. Deshalb geht das so leider nicht mit der Transparenz...
Author of Total Commander
https://www.ghisler.com
Post Reply