Ich versuche, das Verhalten einer Windows-Symbolleiste zu verstehen - insbesondere, wie die folgenden Werte in Wechselwirkung treten:Windows-Werkzeugleiste - Controlling Knopfgröße und Polsterung
- die Größe des Bitmap-Bildes verwendet
- die effektiven Größe eines Symbolschaltfläche
- die Polsterung zwischen dem Bild und der Knopf Kante
- die Höhe der Werkzeugleiste
Der mit einem Button angezeigte Text ist in meinem Fall nicht relevant.
Was ich eigentlich tun möchte, ist eine Option für den Benutzer, so dass er aus mehreren Symbolleistenschaltflächen Größen auswählen kann (Bitmaps von sagen, 16x16, 32x32 oder 48x48 Pixel) und die Symbolleiste entsprechend der Option wieder anzeigen Wert ändert sich. Dies wird implementiert, indem die Bildlisten der Symbolleiste zerstört und mit den entsprechenden Bitmaps neu erstellt werden. Das Problem, das ich momentan habe, ist, dass beim Umschalten von Größe 16 auf 48 und zurück auf Größe 16 die Werkzeugleiste etwas anders aussieht als zuvor.
Dies ist, was die Symbolleiste aussieht, wenn die Anwendung gestartet wird (richtig):
Sobald ich wechseln Größe 48 und wieder zurück, es sieht aus wie diese (falsche):
Alle Schaltflächen sind höher als zuvor und jede Dropdown-Schaltfläche hat zusätzlichen Platz um die Bitmap und den Dropdown-Pfeil.
(Zu Testzwecken wurde die Symbolleiste so hoch eingestellt, dass alle Schaltflächengrößen ohne Erhöhung der Höhe angepasst werden können. Damit soll ausgeschlossen werden, dass die Änderung der Schaltflächengröße auf einer möglichen Änderung der Symbolleiste beruht vorübergehend Größe Schalt 48)
Es sieht aus, als ob eine zusätzliche Polsterung zwischen einer Schaltfläche Bitmap und die Schaltfläche Rand wiedergegeben wurden - als ob die Symbolleiste mit größeren Bitmaps Wiederaufbau Tasten/Windows-verursacht intern die Polsterung erhöhen (was machen würde Sinn, aber nicht verringern, wenn ich später die Symbolleiste mit den kleineren Bitmaps/Schaltflächen neu erstellen. Das Senden von TB_GETPADDING gibt jedoch immer 0x00060007 zurück, das anzeigt, dass das Standard (richtige) Auffüllen für 16 x 16 Bitmaps vorhanden ist.
In einem Versuch, das Problem zu lösen, indem ich Padding selbst einstellen, habe ich den Stil TBSTYLE_AUTOSIZE auf alle Nicht-Trenner-Schaltflächen eingestellt (dies ist erforderlich, um Padding anzuwenden). Mit diesem Stil, ohne auch nur TB_SETPADDING Aufruf, nach 48 bis Größe Vermittlungs- und wieder zurück, sieht die Symbolleiste wie folgt aus:
In diesem Fall wird die Schaltfläche Höhe auch falsch ist.
Die Frage ist: Was die Tasten verursacht unterschiedlich angezeigt werden, nachdem die Bildlisten Wiederaufbau?
Einige beiseite Hinweise:
- Wenn die Symbolleiste Gebäude, nenne ich TB_SETBITMAPSIZE, aber weder TB_SETBUTTONSIZE noch TB_SETPADDING, weil die Bitmap-Größe alles, was ich habe, und ich davon ausgegangen, würde die Knopfgröße aus, dass korrekt abgeleitet werden .
- Ich bin mir bewusst, ich könnte einfach das gesamte Toolbar-Fenster von Grund auf neu erstellen (nicht nur die Bildlisten), aber das möchte ich vermeiden, so dass ich mit dem gleichen Werkzeugleistenfenster arbeiten kann.
- Ich kenne den Symbolleistenstil CCS_NORESIZE (es ist derzeit festgelegt) und die Nachricht TB_AUTOSIZE, aber Experimente mit ihnen haben zu keinen Erkenntnissen geführt.
Hallo, welche Sprache benutzen Sie? –
Steve: Ich benutze C++. – Dabbler