Zeigerumbiegung funktioniert in dem einen Fenster in dem anderen nicht.
-
In meinem Programm gibt es zwei Formulare.
Zum einen das HauptFenster :Es wird ganz gewöhnlich in der WinMain erstellt und hat in der
Ereignissbehandlung FormCreate eine Zeile in der der Zeiger auf
die WindowProc umgebogen wird. Funktioniert einwandfrei.void __fastcall THauptFenster::FormCreate(TObject *Sender) { HauptFenster->WindowProc = myWindowProc; }und das Fenster Akzentmonitor :
es wird in einer Rutine instanziert die vom Konstructor des Hauptfensters
aufgerufen wird.AkzentMonitor = new TAkzentMonitor (HauptFenster);und auch dieses Fenster enthält eine Umbiegung. Die löst eine EAccessViolation aus.
void __fastcall TAkzentMonitor::FormCreate(TObject *Sender) { AkzentMonitor->WindowProc = myWindowProc; }und zum Testen noch eine in einem ButtonClick.Die Funkioniert wieder einwandfrei.
void __fastcall TAkzentMonitor::Button1Click(TObject *Sender) { AkzentMonitor->WindowProc = myWindowProc; }Mich wundert das es in dem einen Fenster funktioniert und in dem anderen nicht.
Bin ich ein Opfer des Zufalls ?MfG Schlumpi
-
Hallo
benutze mal anstelle des OnCreate den Konstruktor des jeweiligten Forms (wie es auch allgemein empfohlen wird)
bis bald
akari
-
-
akari schrieb:
Hallo
benutze mal anstelle des OnCreate den Konstruktor des jeweiligten Forms (wie es auch allgemein empfohlen wird)Ich habs mal probiert.
Das HauptFenster funktioniert immernoch.Das AkzentmonitorFenster gibt eine Exception und das Programm wird beendet.
Ich hab die Zeile danach mal in die FormActivateBehandlung getan und es Funktioniert.
Es löst zwar das Problem, dennoch bleibt die Verwunderung.MfG Schlumpi