Buttons/Bitmap mit 3D-Effekt
-
Hallo zusammen,
ich weiß nicht ob der Titel oben so gut gewählt ist, aber ich versuche mal, zu beschreiben was ich gerne hätte!
Und zwar möchte ich in einem Dialog mehrere bunte kleine Bildchen haben, die hervorgehoben werden, wenn man mit der Maus drüber geht (also so eine Art 3D-Effekt) und die man dann anklicken kann (Funktion also wie Buttons). Ich bin mir aber über die Struktur nicht ganz im Klaren. Sind das Buttons mit Bitmaps? Kann man Buttons denn so hervorheben? Oder sind das einfach Bitmaps? Könnte man bei Bitmaps denn überhaupt einen Klick darauf abfangen?Über Hilfe würde ich mich freuen!
Liebe Grüße,
Meike
-
Such mal nach CBitmapButton :). Für die Hover Funktion empfehle ich die Verarbeitung von WM_MOUSEHOVER und co, was aber schon relativ viel Overhead ist.
Ansonsten also Timer und WM_MOUSEMOVE.
-
Oder mal http://www.codeproject.com/buttonctrl/cbuttonst.asp anschauen.
-
Ich habe mir jetzt die Klasse aus dem letzten Link genommen und in mein Programm eingebaut. Es klappt auch alles wunderbar - bis ich versuche, die Region des Buttons zu verändern. Meine Buttons sollen nämlich nicht rechteckig sein, sondern trapezförmig (da sie in einen acht-eckigen Dialog eingebettet sind). Wenn ich
button1->SetWindowRgn(rgn1, TRUE);aufrufe, sieht man den Rand des Buttons nicht mehr, wenn ich mit der Maus drübergehe und das Icon ändert sich dann auch nicht mehr. Weiß jemand von euch, wie ich das beheben kann? Ich habe absolut keine Ahnung, wo ich da ansetzen muss/sollte.
Liebe Grüße,
Meike
-
Hat keiner eine Idee, wie das funktionieren könnte?

-
Du hast doch schon einen link auf www.codeproject.com bekommen. Warum suchst Du nicht einfach dort und findest:
http://www.codeproject.com/buttonctrl/polybtn.asp
-
Die Klasse habe ich auch schon gesehen, allerdings bietet die andere Button-Klasse weitaus mehr Funktionen - und ich weiß eben nicht, wo ich DORT ansetzen muss, um zu verhindern, dass die Icons nicht mehr getauscht werden, wenn man die Region des Buttons verändert!
-
Ok, also ich bin das ganze jetzt anders angegangen, indem ich die Methode NCHitTest überschrieben habe und abfrage, ob sich die Maus über einer bestimmten Region befindet und setze dann erst die Icons der Buttons.
Nun meine nächste Frage (und ich hab wirklich überall gesucht - und nichts gefunden)....:
Kann man um nicht-rechteckige Buttons einen 3d-Rahmen zeichnen? Es gibt die FunktionDraw3dBorder(CRect);aber die nimmt ja wieder nur ein CRect-Objekt. Ich suche sowas in der Art für eine Region!
-
Dann führe doch die Klassen zusammen. So schwierig ist das nun auch nicht.
Bzgl. Region & Draw3d: Die musst Du selber erfinden...
Da Region nicht auf Linien bezogen sein müssen wird das evtl. schwierig.
-
Martin Richter schrieb:
Dann führe doch die Klassen zusammen. So schwierig ist das nun auch nicht.
Naja, wenn man viel Ahnung hat, ist das ja leicht gesagt. Aber ich werds weiter versuchen!
-
Vielleicht hilft das weiter:
http://www.coding-help.de/buttons.html#MouseOver-Buttons_einfuegen