automatisches Starten einer Funktion
-
Hi!
Ich blamier mich jetzt bestimmt wieder mal mit der Frage...
Folgendes Problem: Ich habe eine Dialog-Fenster Anwendung. Beim Starten des Programms soll direkt eine Funktion aufgerufen werden, ohne daß der Benutzer einen Button klicken muß. Die Funktion hat eine Endlosschleife!
Dabei soll das Dialogfenster aber die ganze zeit sichtbar sein, da dort Werte ausgegeben werden.Schon mal vielen Dank!
-
in InitInstance einen neuen Thread starten.
-
Nimm lieber OnInitDialog
-
Beim Starten des Programms
-
Dabei soll das Dialogfenster aber die ganze zeit sichtbar sein
-
@Alle,
grundsätzlich würde ich auch OnInitDialog nehmen, aber solange OnInitDialog noch läuft, wird das Fenster doch noch nicht angezeigt, sondern erst wenn diese Funktion abgearbeitet wurde, bzw. man ruft ShowWindow oder ähnliches auf, wobei ich dabei auch Teilweise Darstellungsfehler hatte.Ein ganz anderes Problem, da OnInitDialog nicht in einem extra Thread läuft, wird, ist eine eventuell erforderliche Eingabe, während der Ausführung dieser nicht möglich.
-
Also:
1. Man muss mindestens OnInitDialog nehmen, da ja die Funktion wissen muss, um welches Fenster es sich handelt, welches geupdatet werden muss.
2. Eine Endlosschleife ist nie besonders gut, wenn man das UI updaten muss.
Man muss entweder eine Schleife nehmen, die eine Messageloop beinhaltet, oder
einen Thread nehmen.
2.1 Sollte eine Funktion mit Endlosschleife und Messageloop gestartet werden, so ist eine gute Möglichkeit, eine eigene Message zu definieren, welche dann in OnInitDialog per PostMessage an sich selber geschickt wird. Damit wird die Funktion erst gestartet, wenn der Dialog vollständig initialisiert und sichtbar ist.
2.2 Ein Thread kann ohne Probleme per AfxBeginThread innerhalb OnInitDialog gestartet werden.
-
Hi, starte einfach doch einen timer. Und in der Funktion direkt wieder löschen.