Dünner Rand für Dialog-Buttons und -Textfelder?
-
Hallo nochmal,
bei vielen Anwendungen (z.B. Corel, Syn-Texteditor) haben Dialog-Buttons nicht mehr den standardmäßigen dicken Rand (im Schattenbereich rechts und unten 2 px dick), sondern einen, wie ich finde, schöner aussehenden 1 px dicken Rand.
Ein einzelnes Stilbit dafür scheint es nicht zu geben, jedenfalls bin ich weder im Borland 5.5 noch im LCC fündig geworden. Auch habe ich gerade diverse Kombinationen durchprobiert und dabei allerhand interessante Effekte erzielt, nur nicht den gewünschten. Muss ich also mit entsprechenden Nachrichten an die Buttons arbeiten, oder lassen sich solche Stile nur mit Ownerdraw erreichen?
Walter
-
Vielleicht kannst du ja einen Screenshot auftreiben.
-
Meinst du BS_FLAT?
-
-
Meinst du BS_FLAT?
Dachte ich auch erst, aber BS_FLAT unterbindet 3D-Aussehen völlig - was ich nicht möchte.
-
Es gibt doch viele Tools womit man die ganzen Fenstereigenschaften angucken kannst. Z.B. Spy++ (bei Visual C++ dabei) oder Winspector.
Damit kannst du erstmal checken ob es sich dabei um die Fensterklasse "Button" handelt oder eine selbstdefinierte. Ist es ein Fenster der Buttonklasse dann kannst du die Stile ja angucken. Eventuell ists ja auch Ownerdraw.
-
tool schrieb:
Eventuell ists ja auch Ownerdraw.
Ziemlich wahrscheinlich.
-
In Corel sind die Buttons gesubclassed.
-
hehe. wie kann man denn sowas feststellen?
-
mit Hilfe von WinSpy
-
Shlo schrieb:
mit Hilfe von WinSpy
Meinst du das hier? http://www.codeproject.com/threads/winspy.asp
Wenn ja, wo steht denn da im Programm ob ein Fenster gesubclassed wurde?
-
In Spy++ wird die Adresse der Fensterprozedur angezeigt. Und die muss bei allen Buttons ja gleich sein. In Corel war sie anders. Ausserdem sind die Buttons dort nicht Ownerdraw und irgendwie müssen sie aber selbst gezeichnet sein.
-
moin meister ...
wenn ein Button nicht gesubclassed wurde und der Style entspricht nicht
Ownerdraw, dann wird, ja was wohl der "Button" ein "normales" Fenster sei.Wer hindert Dich denn daran eine eigene "Buttonklasse" zu erstellen ?
Wenn Du den IE verwendest und sowas wie die "zurück"-Schaltfläche auf Deinem
Dialog haben willst, könnte ich Dir aushelfen, wenn Du mal Deine Mehltüte reichstOder:
CreateWindow, GetClientRect, FillRect, DrawLine, ...mfg
RB
-
Schau mal auf meiner Homepage in die WinAPI-Ecke. Da hab ich eine ColorButton-Klasse gemacht, die dich interesieren könnte, zumal dort auch alles selber gemalt ist.
-
Danke an alle für die Antworten. Eine einfache Eigenschaft, mit der man die Randbreite bestimmen kann, scheint es also nicht zu geben (auch nicht bei normalen Fenstern?). Die Lösung von WebFritzi ist für mich (als ziemlicher Anfänger) aber eine gute Anleitung, wie ich Ownerdraw konkret umsetzen kann.
Walter
-
Walter Z schrieb:
Die Lösung von WebFritzi ist für mich (als ziemlicher Anfänger) aber eine gute Anleitung, wie ich Ownerdraw konkret umsetzen kann.
Mein Button ist kein Ownerdraw-Button, sondern eine eigene Fensterklasse. Ein Ownerdraw-Button ist von der Klasse "BUTTON" - hat lediglich den STYLE BS_OWNERDRAW gesetzt.