lumbar
08-11-2004, 11:34
Hallo.
Hat hier jemand Beispielcode von Connect wo man auf Membervariablen zugegriffen wird? Ich schaffe es nicht, einen dynamisch erzeugten wxButton mit einer Klasse zu verbinden und in dieser Klasse eine Membervariable zu benutzen.
Folgender Code:
<code>
Connect( id, -1, wxEVT_COMMAND_BUTTON_CLICKED,
( wxObjectEventFunction )( wxEventFunction )( wxCommandEventFunction)
&examenFrame::ButtonClicked );
</code>
"id" ist die wxWindowsId eines wxButton, examenFrame ist die Hauptklasse meines Programmes. In der Methode examenFrame::ButtonClicked kann ich auf keine Membervariable zugreifen, dies führt sofort zum Crash. Der Grund ist, dass die member-variablen falsche Speicheradressen haben. Wenn ich im Kontruktor die Adressen anzeigen lasse und in der Methode ButtonClicked so habe ich folgendes Phänomen: Rufe ich ButtonClicked von Konstruktor aus auf so sind die Speicheradressen identisch und mein Code funktioniert. Rufe ich ButtonClicked aber über die Connect-Methode auf (sprich: Ich klick auf einen Knopf) so stimmen die Speicheradressen nicht überein und das Programm segfaulted.
Dies ist auch der Fall wenn ich mit dynamic_cast und anderen Tricks die Hauptklasse erreiche (GetParent() liefert den Pointer zurück). Auch dann stimmen die Adressen nicht überein...
Ist es nicht möglich, auf member zuzugreifen? Alles was ich will ist, dass das Hauptfenster erfährt, dass ein Button geklickt wurde, welche ID der Button hat und diese ID an eine Member-variable weitergegeben wird...
Danke im Voraus,
Carsten
Hat hier jemand Beispielcode von Connect wo man auf Membervariablen zugegriffen wird? Ich schaffe es nicht, einen dynamisch erzeugten wxButton mit einer Klasse zu verbinden und in dieser Klasse eine Membervariable zu benutzen.
Folgender Code:
<code>
Connect( id, -1, wxEVT_COMMAND_BUTTON_CLICKED,
( wxObjectEventFunction )( wxEventFunction )( wxCommandEventFunction)
&examenFrame::ButtonClicked );
</code>
"id" ist die wxWindowsId eines wxButton, examenFrame ist die Hauptklasse meines Programmes. In der Methode examenFrame::ButtonClicked kann ich auf keine Membervariable zugreifen, dies führt sofort zum Crash. Der Grund ist, dass die member-variablen falsche Speicheradressen haben. Wenn ich im Kontruktor die Adressen anzeigen lasse und in der Methode ButtonClicked so habe ich folgendes Phänomen: Rufe ich ButtonClicked von Konstruktor aus auf so sind die Speicheradressen identisch und mein Code funktioniert. Rufe ich ButtonClicked aber über die Connect-Methode auf (sprich: Ich klick auf einen Knopf) so stimmen die Speicheradressen nicht überein und das Programm segfaulted.
Dies ist auch der Fall wenn ich mit dynamic_cast und anderen Tricks die Hauptklasse erreiche (GetParent() liefert den Pointer zurück). Auch dann stimmen die Adressen nicht überein...
Ist es nicht möglich, auf member zuzugreifen? Alles was ich will ist, dass das Hauptfenster erfährt, dass ein Button geklickt wurde, welche ID der Button hat und diese ID an eine Member-variable weitergegeben wird...
Danke im Voraus,
Carsten