Runden Button erzeugen.
-
Hallo,
ich möchte einen runden Butten erzeugen. Es soll kein viereckigeer mit runden Image sein. Er soll sich so verhalten wie ein Button mit BS_PUSHBUTTON-Style.
Kann mir jemand einen Tipp geben wie ich das realisieren kann ?
Gruss d_A
-
Mit Regions?!
-
owner draw technik müsste doch ganz gut passen
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/usingbuttons.asp
-
Hallo,
ich werde mir beides mal genauer anschauen.
Auf den ersten Blick passen die Regionen besser (CreateEllipticRgn(...) PtInRegion (...)).
Bei den Ownerdraw-Buttons taucht wieder in dem DRAWITEMSTRUCT ein Rechteck auf, in dem das Clipping stattfindet...... aber das ist auch nur der erste Eindruck ....
Danke d_A
-
miller_m schrieb:
owner draw technik müsste doch ganz gut passen
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/usingbuttons.aspund wie soll das gehen? ein fenster ist immer rechteckig, wenn man nicht regions verwendet.
-
Ja, aber Du kannst ja auch einen transparenten Hintergrund nehmen und nen Kreis zeichnen, Problem dabei wäre nur, dass der Button dann wohl auch außerhalb des Kreis auf Klicks reagieren würde (glaube ich). Also Kreis zeichnen in Verbindung mit ner Region und gut is. Wenn Du nur ne Region drauf legst, dann sieht das k**** aus, also ums zeichnen kommst nicht drumherum, denke ich.
-
Hallo,
so hab ich es jetzt gemacht:- runde Region erzeugen (CreateEllipticRgn(...))
- die Mausklicks abfangen (PtInRegion (...)) und dabei einen "pressed"-Status merken
- die Kreise/Bögen (arc (...), Ellipse (...)) je nach "pressed"-Status zeichnenJetzt muss ich das Ganze "nur" noch in eine eigene Window Klasse packen damit ich per CreateWindow (...) beliebig viele runde Buttons erzeugen kann...
Danke d_A
-
Eigentlich müsstest Du Dir doch das Überprüfen beim Klick sparen können, wenn die Region zugewiesen ist. Ich hab' das bisher aber nur bei Fenstern gemacht, da konnte ich aber nichts mit dem Fenster machen, wenn ich außerhalb der Region, aber auf's Rechteck bezogen noch innerhalb des Fenster geklickt habe ...