Ereignisse (SetFocus/KillFocus) einbauen..

Rudi100

Gesperrt
Hallo alle zusammen,

ich habe folgende Situation:
Ich habe einen Dialog mit vielen Checkboxen. Zur besserern optischen Unterscheidung möchte ich gerne die CheckBox mit einem gelben Hintergrund belegen wenn sie den Focus haben. Wenn der Focus wieder weg ist dann möchte ich wieder die normale Hintergrundfarbe haben.

Also ich bräuchte eine Funktion welche beim Focuserhalt und beim Focusverlust angesprochen wird. In diesen Funktionen könnte ich dann jeweils die Farbe ändern. Ich habe bei der Entwicklungsumgebung Microsoft eMbedded Visual C++ mal im ClassWizard geschaut und da gibt es kein solches Ereignis (SetFocus - KillFocus) für Checkboxen.

Wie kann ich diese Funktionen händisch hinzufügen. Ich habe es mal probiert indem ich ein EditFeld das Ereignis "SetFocus" zugeordnet habe und dann die IDC der CheckBox übergeben habe, aber es geht nicht.

1. Problem:
Wie kann ich das den jetzt lösen? Kann mir vielleicht jemand sagen wo ich was eingeben muß damit es funktioniert?

2. Problem:
Wie bekomme ich die "originale" Hintergrundfarbe heraus? Ich will diese ja dann bei Focusverlust wieder vergeben.

Ich würde mich freuen wenn du mir weiter helfen könntest.

Gruß Rudi
 
Wenn keiner 'ne bessere Lösung hat:
Merken, welche Checkbox den Focus hatte.
Beim Maus-Klick über die GetFocus-Funktion das Handle auf das Element holen, das den Focus erhalten hat und dann die Elemente aktualisieren.

Mfg

langer
 
Moin moin,
ich schlag mich auch gerade mit embedded rum und habe ähnliche Aufgaben zu erledigen:)
Die Button sind ebenfalls Fenster und müssten eigentlich ebenfalls die Focus Messages erhalten. Versuch doch einfach mal die message so zubehandeln, als ob der Wizard die erledigt hätte. Wenn das nicht klappt Message-Handler überladen:)
Die original Windows Farben bekommt man mit GetSysColor(..). Gibt hier mehrere Threads zu dem Thema :google:
Im Grunde brauchst du die aber nicht unbedingt. wenn man sich CButton ableitet und die WM_PAINT message in ner eigenen Routine abfängt, dann brauch man nur die Farbe setzen und bei Verlust des Focus die CButton::OnPaint() rufen und schon klappt es.
Gruss Michael
 
Also das hört sich ja echt voll kompliziert an. ICh denke das wird nichts.

Gibt es den keine möglichkeit mit dem Ereignis. Das muß doch gehen. Überall gibt es das. Wieso net im eMbedded Visual C++.
 
so kompliziert ist es nur auf den ersten Blick.
Wenn du genauere Fragen hast, dann kann man evt noch weiterhelfen
Gruss Michael
 
Du brauchst ja gar nicht alle Elemente aktualisieren, somdern nur das Element, was den Focus hatte (hast du dir gemerkt) und das Element, das jetzt den Focus hat.

Mfg

langer
 
Für CheckBoxen gibt es die Ereignisse genauso, such mal nach den Nachrichten BN_SETFOCUS und BN_KILLFOCUS.
 

Neue Beiträge

Zurück