phyrex Geschrieben 20. Mai 2003 Teilen Geschrieben 20. Mai 2003 hi all, momentan probiere ich ein "ProgressWnd" anzuzeigen, das während eines längeren Prozesses einen ProgressBar anzeigt, der einfach durchläuft. Man kann sich das vorstellen wie den Mini-Dialog der erscheint, wenn man im Explorer Dateien kopiert. Die Funktionalität ist bereits vorhanden, also zum Problem: Den ProgressBar lasse ich in einem extra Thread laufen, nur dass dieser eben nicht der GUI Thread ist. D.h. der lange Prozess läuft durch und erst dann kommt der ProgressBar mit dem zeichnen dran. Wie kann man einen zweiten GUI-Thread öffnen, der sich um das Zeichnen des ProgressBar im nicht modalen Dialog kümmert? thanx in advance Phyrex Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 20. Mai 2003 Teilen Geschrieben 20. Mai 2003 --> Verschoben: C++: Compiler, IDEs, APIs, weil Standard-C/C++ keine Threads kennt. Original geschrieben von phyrex Wie kann man einen zweiten GUI-Thread öffnen, der sich um das Zeichnen des ProgressBar im nicht modalen Dialog kümmert? (Ich gehe im folgenden davon aus, dass du von Windows redest) Der GUI-Thread ist der, der das Fenster erstellt, denn für diesen Thread richtet Windows die Messagequeue ein. Wenn also dein ProgressWnd im Hintergrund Arbeit verrichten soll, musst du das Fenster aus dem ursprünglichen Threadkontext erstellen, und dann erst den Arbeitsthread starten. Einen zweiten GUI-Thread solltest du dann nicht mehr benötigen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
phyrex Geschrieben 20. Mai 2003 Autor Teilen Geschrieben 20. Mai 2003 eben dieses versuche ich umzukehren, um dem ProgressWnd eine möglichst grosse wiederverwendbarkeit zu gewähren. wenn man die langen aktionen, die bereits im Code vorhanden sind, jeweils in einen Worker Thread packen muss, ändert man auch die komplette struktur und das interface des bestehenden codes, zumindest durch eine schnittstellen-erweiterung. das soll aber verhindert werden. kann nicht nur der GUI Thread das Fenster erzeugen? werd da mal rumprobieren... vielen dank für konstruktive antworten Phyrex Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
phyrex Geschrieben 20. Mai 2003 Autor Teilen Geschrieben 20. Mai 2003 ist es denn nicht üblich, einen zweiten gui thread zu öffnen? finde quasi keinerlei informationen dazu... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 20. Mai 2003 Teilen Geschrieben 20. Mai 2003 Original geschrieben von phyrex ist es denn nicht üblich, einen zweiten gui thread zu öffnen? finde quasi keinerlei informationen dazu... Eigentlich nicht. Meistens reicht ein GUI-Thread pro Prozess aus, weil der eigentlich sowieso die meiste Zeit wartet. Aber du kannst ja genausogut zwei neue Threads starten. Ein Thread wird dadurch zum GUI-Thread, indem du aus diesem Thread ein Fenster erzeugst. Das darf halt nicht der sein, der die ganze Arbeit macht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
phyrex Geschrieben 20. Mai 2003 Autor Teilen Geschrieben 20. Mai 2003 danke! habe mich inzwischen überzeugen lassen und schreibe wrapper functions für die arbeit und packe das in einen worker thread. das fenster läuft in der zwischenzeit im gui thread mit. Phyrex Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
WhiteRabbit2003 Geschrieben 20. Mai 2003 Teilen Geschrieben 20. Mai 2003 Hab das auch noch nie anders gehört. Es sei denn du machst viel mit GDI. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.