OnInitDialog
-
Hi,
wo muß ich einen Funktionsaufruf hinschreiben, das die Funktion ständig automatisch aufgerufen wird?
OnInitDialog ??? ... Nee Nä!
VC++ 6.0Danke schon mal
-
Denke mal du willst nen timer. Das geht mit SetTimer on OnTimer
-
Nein kein Timer, das wäre schon klar.
Ich will nur das eine Memberfunktion ohne das ich einen Button drüke oder so ständig wieder aufgerufen wird.
-
ich verstehs immer noch net...
so was?class Foo { public: void DoCalling(int n) { for(int i=0;i<n;i++) CalledMethod(); } void CalledMethod() { // wird immer wieder aufgerufen } }
-
Im prinzip schon,
aber ohne Schleife und das ganze im VC++.
Der Aufruf muß in die Stelle im Programm, die immer wieder durchlaufen wird.
Das Prog is mit VC++ 6.0 mit dem Assistenten gemacht.
-
Wenn ich den Aufruf in "OnInitDialog" mache,läuft net, weil OnInitDialog nur zur Inizialisierung ist.
-
Genau das macht ein timer
BOOL Foo::OnInitDialog() { SetTimer(1,100,0); // starte time mit ID 1 und 100ms tackt } void Foo::OnTimer(UINT nIDEvent ) { if(nIDEvent==1) { // das war dein timer mach was } }
OnTimer wird jetzt in 100ms abständen so lange aufgerufen bis du KillTimer(1) ausfrust.
-
Die Idee mit dem Timer hate ich auch schon ,aber es ist ja unnötig, wenn ich wüsste wo ich den Aufruf plazieren muß hätte ich den Timer gepart.
-
Es gibt kein funktion die windows laufend aufruft in nem MFC prog. Das selbst machen in der OnInitDialog geht auch net weil du dann die message queue nicht abareiten kannst solange du in der loop hängst -> programm oberfläche friert ein. Du muss sicher stellen das die message loop läuft und da ist die beste möglichkeit ein timer, oder ein eingener thread der in ner schleife deine funktion aufruft.
-
OK,
vielen Dank erst mal, ich werde wohl einen Timer nehmen, wenn ich noch ne andere Lösung finden sollte, lass ich Dich das wissen.
-
Es müsste noch den OnIdle-Event geben.