Farbe von Button bei klick verändern?!



  • Hi, bin `n ziemlicher newbie in VC++ und hab mal ne Frage:

    Ich möchte das ein Button, wenn ich auf ihn klicke, sich rot färbt.....hab leider kein Plan wie das geht, kann mir da jemand helfen? :_)

    EDIT: Also nicht das ich jetzt falsch verstanden werde, wie man ein Dialogfeld mit Buttons usw. macht, weiß ich natürlich!

    Weiß auch wie man die Hintergrundfarbe von nem Dialogfenster ändert, aber leider nicht wie man die von einem Button ändert! 😕



  • Wenn du noch nie vorher damit gearbeitet hast, wird es rel. schwierig zu verstehen sein. Du musst 'Subclassen', d.h. eine eigene von CButton abgeleitete Klasse erstellung und die virtuelle Funktion OnDrawItem() überschreiben.

    Wenn ich es nicht vergesse kann ich mal zuhause nachschauen, ob ich nicht nen Codeschnipsel habe. Ansonsten steht es, soweit ich weiß auch irgendwo unter www.msdn.de.

    Such mal nach 'custom controls' oder 'ownerdrawn controls'.



  • Danke erstmal für die Antwort, ich gucke mal ob ich daraus schlau werde, wenn du natürlich an den Codeschnipsel denkst, wäre das noch besser! 😋



  • Codeschnipsel kannst du von selbst definierten Buttons unter www.codeproject.com massenhaft finden.



  • Ich habe es nach dieser Anleitung mal gemacht. Sorry, habe gestern leider nicht mehr dran gedacht, aber das sollte hier auch helfen.
    http://www.codeguru.com/cpp/controls/buttonctrl/article.php/c5157/



  • Erstmal danke für die Anleitung, funktioniert bei mir leider nicht so wie es da steht....er compiliert zwar alles richtig und mit 0 errors & 0 warnings, aber sobald ich es ausführe, stürzt es ab "unknown software exception (0x800000003) bla bla bla" 😕



  • Du musst deinen Button dann auch mit dem BS_OWNERDRAWN -Flag erstellen.



  • öhm....wie mach ich das? *schäm*



  • Du hast ja nun deine Button-Klasse.
    Wenn du mit Hilfe des Resourceneditors einen Button hinzufügst, kannst du anschließend in der Eingenschaftenseite (F4 wenn Button ausgewählt)
    'Owner Draw' (kenne nicht die deutsche Bezeichnung im Visual Studio) auf true setzen.
    Wenn du es mit Create erstellt hast fügst du bei den Styles BS_OWNERDRAW hinzu.



  • strcat schrieb:

    öhm....wie mach ich das? *schäm*

    Entweder in der IDE bei den Eigenschaften der Schaltfläche mit der Auswahl von "Besitzerzeichnung" oder per Code mit

    CButton *pButton = (CButton*)GetDlgItem(IDC_BUTTON1);
    pButton->ModifyStyle(NULL,BS_OWNERDRAW);
    


  • Paul_C. schrieb:

    Du hast ja nun deine Button-Klasse.
    Wenn du mit Hilfe des Resourceneditors einen Button hinzufügst, kannst du anschließend in der Eingenschaftenseite (F4 wenn Button ausgewählt)
    'Owner Draw' (kenne nicht die deutsche Bezeichnung im Visual Studio) auf true setzen.
    Wenn du es mit Create erstellt hast fügst du bei den Styles BS_OWNERDRAW hinzu.

    Ach das meinst du, jo hatte den Button mit dem Ressourceneditor erstellt und "Besitzerzeichnung" (so heißt es auf deutsch) auch aktiviert, stand ja auch in der Anleitung!

    Aber bringt leider nichts! 😞



  • Ok. Dann noch eine Frage: Hast du in deiner eigenen Klasse, die Messagebehandlung für WM_DRAWITEM unter Nachrichten oder unter Überladene Funktionen (Virtuelle) erstellt? Sollst nämlich die überladene nehmen.



  • Unter "Nachrichten".....oha, dann liegts wohl daran?!

    Aber wo zum Henker finde ich "virtuelle Funktionen" ?



  • Aaaaaaah so, jetzt hab ich sie gefunden (ist in der Anleitung halt ziemlich anders beschrieben und bin noch neu in VC)!

    So, ich probiers gleich mal aus!

    EDIT: Hm, also dasselbe Spiel, mit 0 errors compilt aber es stürzt ab....na denn, ich schätze mal ich hab irgendwo anders Bockmist gebaut, ich werd das schon finden, danke euch erstmal für die Hilfe! 🙂



  • Sonst versuche ich, nochmal daran zu denken. Viel Erolg.


Log in to reply