Darstellung einer Werteänderung einer Checkbox

kscha

Mitglied
Hallo Leute,

ich würde gerne in einer GUI (Visual C++, MFC) die Darstellung von Checkboxen bzw. Radiobuttons ändern, ohne auf diese draufklicken zu müssen.
Eine Werteänderung in meinem Programm ist ja gar kein Problem, aber wie kann ich diese Änderungen in die GUI-Darstellung übernehmen, so daß die Häkchen automatisch gesetzt werden ?
Ich habe schon so Funktionen wie 'Paint' und 'UpdateWindow' probiert, aber irgendwie klappt das nicht.... oder ich wende sie falsch an !

Kann mir da jemand weiterhelfen ? Ich würde mich freuen !
Vielen Dank

Gruß, Kai
 
Bei der MFC reicht es AFAIK nicht aus, einfach nur die Eigenschaft des Objektes zu ändern - das ganze muss noch mit der Update-Methode an das Formular gesendet werden, damit die Änderungen auch sichtbar sind.
 
Hallo Lirion !

Das ist klar, daß ich eine Änderung noch übergeben muß, aber wenn ich z.B. die Funktion 'UpdateWindow()' aufrufe, dann tut sich gar nichts in meinem Fenster.
Alle relevanten Daten sind bereits auf TRUE bzw. FALSE gesetzt und mit UpdateData aktualisiert, aber ich weiß nicht, wie das mit dem Update funktioniert.
Muß ich vielleicht einfach das gesamte Fenster nochmal neu 'painten' ? (Aber 'Print(GetDC(), PRF_CHECKVISIBLE)' geht auch nicht). :confused:

Viele Grüße
Kai

P.S.: Was heißt eigentlich 'AFAIK' ? :)
 
Du hast mich nicht ganz richtig verstanden, Du musst nicht mit UpdateWindow oder Paint das Formular neu zeichnen/aktualisieren, sondern mit UpdateData die Eigenschaften in die Steuerelemente übertragen, damit diese richtig angezeigt werden.
Die Funktion UpdateData bildet den Schlüssel für die Arbeit mit Steuerelementvariablen in Visual C++. Die Funktion übernimmt die Daten aus den Variablen und aktualisiert mit den Werten die Steuerelemente auf dem Bildschirm. Umgekehrt übernimmt die Funktion die Daten aus den Steuerelementen und füllt die zugeordneten Variablen mit allen vom Benutzer geänderten Werten. Die Richtung der Datenübertragung steuert man mit dem an die Funktion UpdateData übergebenen Argument. Ist das Argument auf FALSE gesetzt, werden die Werte in den Variablen an die Steuerelemente im Fenster übertragen. Übergibt man TRUE als Argument, erhalten die Variablen die aktuellen Werte der Steuerelemente im Fenster. Welcher Wert an die Funktion zu übergeben ist, hängt also davon ab, in welcher Richtung die Aktualisierung stattfinden soll. Nachdem Sie eine oder mehrere Variablen in Ihrem Code aktualisiert haben, müssen Sie UpdateData aufrufen und FALSE als Argument übergeben. Wenn Sie die Variablen lesen müssen, um deren aktuellen Wert zu erhalten, ist UpdateData mit dem Argument TRUE aufzurufen, bevor Sie irgendeinen Wert aus den Variablen verarbeiten. Ein Gefühl für diese Vorgehensweise werden Sie entwickeln, wenn Sie mehr Code in Ihre Anwendung aufnehmen.
Quelle: http://www.mut.com/media/buecher/VCPLUS6/data/kap02.htm

Meiner Meinung nach ein völlig überflüssiger Schritt... :rolleyes:

PS: AFAIK heisst "as far as I know" ("soweit ich weiss"). Das ist Usenet-Deutsch. ;)

Gruss, Dario
 
Zurück