Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Timer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.05.2006, 15:54 Uhr
~akoch
Gast


Hallo,

ich kann euch leider kein Code geben. Bin gerade auf der Arbeit ;-)

Hab aber folgendes Problem:

Ich verwende in meinem MFC-Dialog einen Timer.
Dieser Timer wird gesetzt sobald man auf einen Knopf drückt.
Wenn die Zeit abgelaufen ist, wird eine Funktion aufgerufen.
Das funktioniert soweit sehr gut.

Die Funktion spuckt nach Prüfung einer Variable eine MessageBox aus.
Die Variable änder ich in anschließend, so das beim nächsten Mal die MessageBox
nicht erscheint (If-Abfrage).

Jetzt aber das seltsame:
Wenn ich aber die MessageBox nicht wegklicke (auf OK)
erscheint nach Ablauf des nächsten Intervals wieder eine MessageBox.
Die MessageBox geht immer wieder neu auf bis ich alle weggeklickt habe.

Klick ich die MessageBox direkt weg, ist Ruhe. Das Programm befindet
sich permament im Tray.

Weiß jemand warum? Ich weiß, klingt alles sehr verwirrend. Aber vielleicht kann
mir jemand einen Tip geben.

Gruß,
Andy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.05.2006, 16:55 Uhr
~Flapsi01
Gast


Hallo !

Es ist eben das Wesen eines Timers, dass er vom Betriebssystem immer wieder aufgerufen wird. Wenn Du den Aufruf der MessageBox durch die Veränderung der beschriebenen Variablen nicht unterdrückst, werden eben mit jedem Zyklus MessageBoxes (ähh... Boxen ?) aufgemacht.

Überlege, ob es nicht sinnvoll wäre, nach dem Erscheinen der ersten MessageBox ggf. den Timer zu "killen" (mit KillTimer()) und falls nötig, erst nach dem Abarbeiten und Quittieren der MessageBox neu zu setzen.

Beste Grüße

Flapsi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.05.2006, 15:10 Uhr
~akoch
Gast


Nein, das ist ja genau mein Problem.
Die Variablen sind soweit abgeändert, das sie die MessageBox nicht mehr kommen sollte.

Sinngemäß:


Code:

#include "wasauchimmer"

int bereitsgelaufen=0;

function timer_start()
{
       starte_timer(alle 3 sekunden);
}

funtion timer_aufgerufen()
{
       if (bereitsgelaufen == 0)
       {
              MessageBox("Hallo!");
       }
       bereitsgelaufen = 1;
}



Also so siehts sinngemäß aus. Wenn ich das Programm starte und der Timer gesetzt
wird, erhalte ich nach 3 Skeunden eine MessageBox. Klicke ich diese weg, hat es mein
Programm gerafft und nervt mich nicht mehr.
Klicke ich die MessageBox nicht weg. Erscheint die MessageBox immer wieder. Obwohl die
Variable 0 sein MUSS. Ich verstehs einfach nicht...

Hat noch jemand einen Tip?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.05.2006, 15:33 Uhr
ao

(Operator)


Na klar. Der Timer läuft ab und startet die Funktion timer_aufgerufen. Die läuft los und zeigt die MessageBox. Die MessageBox ist modal, d.h. die Funktion wird angehalten und läuft erst weiter, nachdem die Box geschlossen wurde.

Lässt du die Box auf dem Bildschirm, läuft der Timer nach 3 Sekunden wieder ab und ruft timer_aufgerufen erneut.

bereitsgelaufen steht immer noch auf 0, denn die letzte Zeile (bereitsgelaufen = 1) wurde noch nie ausgeführt; die erste Messagebox ist ja noch auf dem Bildschirm.

Alles Klärchen?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.05.2006, 15:34 Uhr
Helmut



Hi!
Schreibs mal so


C++:

funtion timer_aufgerufen()
{
       if (bereitsgelaufen == 0)
       {
            bereitsgelaufen = 1;
            MessageBox("Hallo!");
       }
      
}



mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.05.2006, 15:45 Uhr
~akoch
Gast


Oh mein Gott. Na klar. Da habe ich gar nicht dran gedacht (modal).
Das ist ja eigentlich der Sinn einer (Fehler-)Meldung (MessageBox).

Ihr wollt gar nicht wissen, wie lange ich daran rumgebastelt habe ;-)

....

Vielen Dank!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: