[VC++2005] Eigene Button Klasse?

the incredible Leitman

Erfahrenes Mitglied
Hallo Leute! :)

Ich habe ein Problem:
Für ein Projekt soll ich eine Oberfläche erstellen, auf der der Benutzer mittels Buttons einige Aktionen durchführen kann.
Das wäre alles überhaupt kein Problem, wenn nicht die Vorgabe des Ausehens der Buttons wäre :(

Ich programmiere unter MSVS 2005 in C++,
aber die Buttons, die ich zur Verfügung habe, entsprechen nicht dem vorgeschriebenen Layout :(

Meine erste Idee war, die Button Klasse zu überschreiben und das Aussehen zu verändern. Gott sei Dank habe ich als Hilfestellung bereits einige Files der ButtonKlasse bekommen... das ist aber alles ein MFC Active X Control und sagt mir leider überhaupt nichts...
Wie kann ich das übernehmen? Geht das überhaupt?

Bitte kann mir jemand helfen, kenn mich wirklich absolut Stana aus :-(
 
Zuletzt bearbeitet:
Einfach ein Custom Control erstellen und von Button ableiten oder auch ohne Button-Ableitung. Wie du willst.

Zusatzliche Infos gibt es hier.
 
Norbert Eder hat gesagt.:
Einfach ein Custom Control erstellen und von Button ableiten oder auch ohne Button-Ableitung. Wie du willst.

Hey, Danke erstmal!

Ich kann schon eigene CustomControls erstellen, das ist mir ja eh klar!
Aber ich habe bereits eine ButtonKlasse, die ich gerne verwenden würde...

Ich poste einfach mal die 2 Datein, die ich bekommen hab, vielleicht kannst du damit etwas anfangen...

Finde das sieht aus wie MfC, womit ich keinerlei Erfahrung hab...
Kann ich das irgendwie verwenden? Nur halt nicht MFC sonder managed C++

:confused:
 

Anhänge

  • 25803attachment.cpp
    6,3 KB · Aufrufe: 46
  • 25804attachment.c
    21,7 KB · Aufrufe: 39
  • 25805attachment.c
    21,7 KB · Aufrufe: 47
  • 25806attachment.cpp
    6,3 KB · Aufrufe: 64
Zuletzt bearbeitet:
OK, nein, ich geb auf, ich brings nicht zusammen! *grml*

Werde halt doch eine eigenes ButtonControl erstellen...

Aber wie genau gehe ich da vor? :confused:
Ich hab schon eigene Controls erstellt, indem ich die von Windows::Forms::Controls abgeleitet habe

Nun möchte ich aber alle Funktionen der StandartButtons haben
PLUS andere FlatStyles (die original Buttons können nur Flat, PopUp, Standart und System) haben, also von System::Windows::Forms::Button ableiten, schätze ich einmal, oder?

Aber wie mach ich dann weiter?
das Property "FlatStyle" ist doch sicher ein enum (oder etwas ähnliches) wie kann ich da neue Möglichkeiten hinzufügen?
Und muss ich dann die neuen Styles per Hand selber zeichnen? (zB dass bei in einer Create oder Paint Methode :confused: )

Bitte helft mir, weiß echt nicht wo ich anfangen soll... :-(
 
Dafür musst das IButtonControl Interface implementieren. Deine Klassendefinition sollte also so ausschauen:
C#:
[System.ComponentModel.DesignerCategory( "Code" )]
public class ButtonBase: System.Windows.Forms.Control, IButtonControl {}
Die Flatstyles musst via GDI+ selber implementieren. ;-) Oder Du verwendest Bilder...

Schau alternativ mal auf TheCodeProject nach. Die sollten solchen Krims-Krams eigentlich mit dabei haben.
 
OK, Danke! :D

Auf CodeProject ist verdammt viel Stuff bezüglich Custom Button Classes

Aber entweder in MFC, ActiveX Controls oder Beispiele, die schon mehr als 5 Jahre alt sind und somit in managed C++ in Visual Studio 2005 nicht wirklich nutzbar sind.... :)

Aber ich habe absolut keinen Schimmer, was is mit dem von dir beschriebenen IButtonControl Interface anfangen soll :confused:
Hilfe hab ich zwar bekommen (ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/CPref17/html/T_System_Windows_Forms_IButtonControl.htm)

Aber damit fang ich nichts an... wohl immer noch zu wenige Grundkenntnisse in VC++ :-(

Deshalb fange ich von Grund auf damit an :-O

werde selber ein Control schreiben, dass sich in den verschiedenen Staten zeichnet (ob der Button aktiviert ist, ob er gerade geklickt wird,... usw...) und auf verschiedene Events reagiert (wie Mouse Click, Click,...)

Also, macht euch bereit, ich werde euch sekieren und nerven, euch mit verplanten Fragen und sinnlosen Codesnippets zum Auszucken bringen ;) *fiesgrins*

Danke nochmals
 
leitman hat gesagt.:
Aber ich habe absolut keinen Schimmer, was is mit dem von dir beschriebenen IButtonControl Interface anfangen soll :confused:
Das ist dafür da, dass Du ein DilalogResult mit deinem Button für ein Dilaogfenster bereit stellen kannst.

Schau Dir aber auch mal die ButtonBase Klasse an...
 
Okay, super
danke, werd ich mir anschaun :D

Ps: sag, ich will dich ja nicht nerven, aber du hast ja mal eine Demo bezügl. Tabs und mehreren Fenstern angefangen, oder? ich hab dann nicht mehr in diese Richtung weitergetan, weil ich dann andere Probleme hatte, aber in nächster Zeit geht das Projekt wieder los... und ich hab immer noch keinen Plan... ;-(
 
Meld Dich einfach Ende der Woche nochmal bei mir. Ich hab die Sourcen nicht mehr auf Arbeit
und bin zZ auch ziemlich schwer erkältet. Aber vergiss es nicht schonwieder.
Mach dich aber daruf gefasst das es ein richtiges Steuerlement werden kann.
Plane zZ eine Tabgesteuerte MDI Anwendung in der ich das gut gebrauchen könnte.
D. h. das ich es OS oder komerziell machen werde sofern es wirklich was Brauchbares werden sollte.

Machs Gut.
 
@ Cosmo: Okay, werd mich melden, Danke nochmals!

AAAABER...Ich bin (wie zu erwarten) auf ein kleines Problem gestoßen, als ich meine eigene Button Klasse geschrieben habe...
Und zwar möchte ich gerne, auf meinem Button z.B. anstelle von Text auch die Möglichkeit haben, Bilder darzustellen!
Aber wie kann ich in meinem Control eine Funktion schreiben, die ein Bild an einer bestimmen Position zeichnet?

Standartmäßig gibt es in Controls nur die Möglichkeit mittels "BackgroundImage" ein Bild zu laden und mit "BackgroundImageLayout" das Bild auf die Größe anzupassen

Aber ich hätte gerne dass ich das Bild (also den Pfad) übergebe und die Position an der es gezeigt werden soll... wie kann ich das lösen?

Hab irgendwie an eine PictureBox gedacht, oder so in der Art...

Kann mir da vielleicht jemand weiterhelfen?
THX Leitman
 

Neue Beiträge

Zurück