[OBSOLET] C++ - Event wenn sich Variablenwert ändert?

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [OBSOLET] C++ - Event wenn sich Variablenwert ändert?

BeitragMo, Apr 04, 2016 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

für ein Projekt brauche ich ein Konstrukt, das ein Event dann auslöst, wenn sich der Wert einer Variablen geändert hat. Nutzen tue ich Visual C++ mit MFC (ist wahrscheinlich nicht relevant). Habe schon bei Google geschaut, es scheint aber nur Lösungen für C# zu geben, was uninteressant ist. Kennt jemand eine Möglichkeit, dies zu tun?
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am Di, Apr 05, 2016 21:58, insgesamt einmal bearbeitet

Thunder

BeitragMo, Apr 04, 2016 23:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Sowas gibt es nicht wirklich. Zumindest nicht von der Standardbibliothek oder irgendeiner bedeutenden Bibliothek bereitgestellt (soweit ich das weiß).

Was du machen kannst ist, dieses Event schon als neuen Thread starten, der mit einer
condition_variable darauf wartet, ausgelöst zu werden. Und aus dem main-Thread kannst du die
condition_variable notifien und deine Variable ändern und dann läuft der Thread (~= Event).

Siehe: http://stackoverflow.com/quest...nged-value

wenn das nicht hilft, beschreibe die situation bitte genauer.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Silver_Knee

BeitragDi, Apr 05, 2016 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte natürlich auch die Variable nur mit einem Setter zugänglich machen und im Setter dann den nötigen Event-Code unterbringen. Das geht natürlich nicht immer.
 

CO2

ehemals "SirMO"

BeitragDi, Apr 05, 2016 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Prinzipiell geht es um folgendes:
Wenn ich mir Fensterprogrammierung vorstelle, gibt es viele Ecken, an denen sich die Steuerelemente gegenseitig beeinflussen. Spezielles Beispiel: Ich habe zwei Comboboxen. Wähle ich in der oberen Combobox etwas aus, so sollen sich die Einträge der unteren Combobox ändern. Bisher habe ich das immer so gemacht, dass ich dann die entsprechenden Events in dem Frame abgefangen haben und dann je nach Auswahl in der obigen Combobox die untere gefüllt. Nun dachte ich mir, dass es wohl auch praktisch sei, wenn das automatisch passiert. Alles was man bräuchte wäre ja nur eine Klasse - nach Möglichkeit eine Vorlage - die auf der einen Seite die auslösende Variable (sprich im obigen Beispiel die Selection der ersten Combobox) "abhört" und Änderungen dieser auf der anderen Seite an die abhängige Methode weitergibt (natürlich mit geändertem Wert).
Habe aber wieder Abstand von dieser Idee genommen, da der Aufwand denke ich derselbe ist, egal, ob ich die Abhängigkeit im betroffenen Frame oder in der Combobox selbst mache (dann müsste ich ja auch eine Ableitung je abhängiger Combobox haben Rolling Eyes )

Trotzdem vielen Dank für die Hilfe!
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

DAK

BeitragSa, Apr 09, 2016 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, kann man aber in C++ doch relativ einfach machen. Was du machst, ist, du ersetzt deine Variable mit einem Objekt, dessen Assignment-Operator überladen wird, mit einer Funktion, die das Event auslöst. Damit kannst du immer noch ein einfaches Assignment mit = verwenden, und gleichzeitig eine Funktion ausführen und ein Event auslösen.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group