Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
16. Jul 2009
Wie kann ein Fenster eine Nachrichtenschleife haben? Ein Fenster hat eine Fensterprozedur, und mit seiner Nachrichtenschleife ermöglicht ein Thread Windows, die Fensterprozeduren seiner Fenster aufzurufen. Der Hauptthread hat seine Nachrichtenschleife verteilt in den drei Methoden TApplication.Run/HandleMessage/ProcessMessage. Da aber der neu erstellte Thread Application.Run nicht aufruft, muss...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
16. Jul 2009
Wo habe ich gesagt, dass der Thread ein eigenes Fenster braucht? Er braucht eine Nachrichtenschleife. Wer soll denn sonst auch die WndProc aufrufen? Danke übrigens für die Quellcode-Ausschnitte - ich bin schließlich nicht im entferntesten auf die Idee gekommen, mir die mal anzuschauen, bevor ich meine "Behauptungen" aufgestellt habe.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
16. Jul 2009
Eine Nachrichtenschleife sieht in der einfachsten Form so aus:
var msg: tagMSG;
while GetMessage(msg, 0, 0, 0) do
DispatchMessage(msg);
Die müsstest du dann einbauen, wenn der Timer laufen soll. Beenden kannst du die Nachrichtenschleife mit PostQuitMessage(0). Meine hellseherischen Fähigkeiten sagen mir allerdings, dass ein TTimer nicht die beste Lösung für dein Problem ist - jetzt...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
16. Jul 2009
Und wer soll die Nachrichten für das Fenster bearbeiten? Das kann nur der Thread tun, der das Fenster erstellt hat. Und er braucht dazu eine Nachrichtenschleife.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
16. Jul 2009
Objekte erzeugst du mit Objekt := TKlasse.Create, nicht mit Objekt.Create. Des weiteren wird zumindest der Timer im Thread nicht so ohne Weiteres funktionieren, da er auf eine Nachrichtenschleife angewiesen ist. Zuguterletzt möchte ich noch vor dem leeren Except-Block warnen; wenn du schon nichts tust, beschränke dich mit der on-Klausel auf bestimmte Exceptions, denn EOutOfMemory oder...