Hallo zusammen,
bräuchte einmal etwas Hilfe bei einer Callbackfunktion. Ich versuche eine Funktion einer Microsoft DLL die eine Callbackroutine benötigt zu nutzen. Der Zeiger auf die Callbackroutine wird aber nicht beim Funktionsaufruf übergeben sondern zuvor über eine RegisterMessageCallback Funktion. So weit so gut, das Registrieren meiner Callback funktion klappt. Sobald ich dann die eigentliche Funktion aufrufe komme ich auch bei meiner Callback routine an und alle übergebenen Parameter stimmen. Wenn ich auf Objekte meines Formulars lesend zugreife werden mir auch da die richtigen Werte angezeigt, z.B. Form1.Progressbar1.Position, allerdings steigt das Programm aus der Callback Routine aus sobald ich in ein Objekt meines Formulars schreiben will.
Kann das jemand nachvollziehen? Wenn ich per einzelschritt debugge sehe ich das es im Code meiner Form weiter geht, da wird dann z.B. die Caption der Progressbar gesetzt was auch geht, aber wenn dann Repaint() der Progressbar aufgerufen wird lande ich dann von da aus in der unit system wo die Funktion TObject.Dispatch ausgeführt wird und beim Rücksprung ist dann Ende und die DLL Funktion läuft ohne Callback bis zum Ende.
Habe absolut keine Ahnung was da schief läuft und komme dadurch nicht mehr weiter.
bräuchte einmal etwas Hilfe bei einer Callbackfunktion. Ich versuche eine Funktion einer Microsoft DLL die eine Callbackroutine benötigt zu nutzen. Der Zeiger auf die Callbackroutine wird aber nicht beim Funktionsaufruf übergeben sondern zuvor über eine RegisterMessageCallback Funktion. So weit so gut, das Registrieren meiner Callback funktion klappt. Sobald ich dann die eigentliche Funktion aufrufe komme ich auch bei meiner Callback routine an und alle übergebenen Parameter stimmen. Wenn ich auf Objekte meines Formulars lesend zugreife werden mir auch da die richtigen Werte angezeigt, z.B. Form1.Progressbar1.Position, allerdings steigt das Programm aus der Callback Routine aus sobald ich in ein Objekt meines Formulars schreiben will.
Kann das jemand nachvollziehen? Wenn ich per einzelschritt debugge sehe ich das es im Code meiner Form weiter geht, da wird dann z.B. die Caption der Progressbar gesetzt was auch geht, aber wenn dann Repaint() der Progressbar aufgerufen wird lande ich dann von da aus in der unit system wo die Funktion TObject.Dispatch ausgeführt wird und beim Rücksprung ist dann Ende und die DLL Funktion läuft ohne Callback bis zum Ende.
Habe absolut keine Ahnung was da schief läuft und komme dadurch nicht mehr weiter.
Comment