Ist eine Minute schon vorbei ???
-
Hallo,
wie kann ich feststellen, ob eine Minute schon vorbei ist ???
Nachdem der Anwender den Button gedrückt hat, soll nach einer Minute ein
Ereignis geschehen (z.B. etwas berechnet werden) .. doch dazu muss ich
erstmal wissen wann die eine Minute zu ende ist !!!Danke
:: NoName ::
-
SetTimer, KillTimer, WM_TIMER sollten dir helfen...
-
sowas ähnliches habe ich mir schon gedacht ... Aber wie mache ich das mit der OnTimer Funktion ??? Das gute ist, dass ich sowieso eine OnTimer Funktion in meinem Programm aufrufe der die vergangene Zeit zählt und ausgibt ! Aber wie kann ich feststellen ob eine Minute von der gezählten Zeit vorbei ist ???
Sobald der Start-Button betätigt wurde, läuft die Zeit nach oben wie eine Stouhr ! Stunden,Minuten und Sekunden werden ausgegeben ! Nur woher soll ich wissen wann die Minute zu ende ist ?

-
du erstellst einen neuen timer ( das weisst du ja wie es geht z.b. ID_afteronemin_TIMER)
dann SetTimer(ID_afteronemin_TIMER,1000*60,NULL); // 1 min
soll ja nur was ausgeben nach einer min ( also nichts zeitkritisches )du hast ja in deiner ONTIMER fkt
void LOLDlg::OnTimer(UINT nIDEvent) { if ( nIDEvent == ID_firsttimer_TIMER) // wenn mehr timer dann nicht if dann switch z.b. { // hier EINMAL !!! // aufruf von SetTimer(ID_afteronemin_TIMER,1000*60,NULL); // wie gesagt einmal bitte, nimm ne bool variable zum checken // lol } if ( nIDEvent == ID_afteronemin_TIMER) { // die ausgabe // KillTimer(ID_afteronemin_TIMER); // lol } }hoffe ich konnte dir helfen. sag wenns klappt oder probs entstehen
-
Danke newkid, hat super funktioniert !!!

-
Ich habe noch eine kleine Frage zur Berechnung. Warum berechnet er das nicht ?
case ID_CALC_TIMER : CString calc2 = m_calc+m_mon; GetDlgItem(IDC_CALC)->SetWindowText(calc2); break;Er berechnet m_calc + m_mon nicht ... warum ? Er gibt mir nie das berechnete aus
????Danke
-
preisfrage:
wie viel ist "ABCD" + "DCBA" ?
:pwas soll er da rechnen? ist doch ein string
-
Er sollte eigentlich nur den Inhalt (also die Zahlen) der Strings errechnen !
Oder soll ich keine String`s verwenden, lieber int`s ??
-
Wie soll ich das denn nun schreiben ??? CString`s addiert er nicht...Und mit dem ClassWizard kann ich keine int`s (etc.) erzeugen nur CString`s...

-
Was für eine Frage! Auf den kleinen Zeiger schauen

-
Sorry, aber deine Antwort hilft mir nicht sehr weiter ! Den einzigen Zeiger den ich sehe ist der von GetDlgItem

Das gibt es doch nicht, Ich sehe den Wald vor lauter Bäumen nicht

-
Wenn du einen INT brauc hst mit dem du Rechnen kannst aber nur einen CString hast dann wandle den CString in INT um. Stichwort
atoi(CString);
Und bitte jetzt nicht das ergebnis mit = dem CString zuweisen.
Dafür gibt es Format()
-
Ich hab das jetzt so geschrieben, aber es erscheint immer beim Ausführen ein Fehler :
case ID_CALC_TIMER : CString calc2; calc2.Format(atoi(m_calc) + atoi(m_mon)); GetDlgItem(IDC_CALC)->SetWindowText(calc2); break;Was mache ich falsch ?
Danke
:: NoName ::
-
Du must folgendes verwenden:
calc2.Format(_T("%d"), atoi(m_calc) + atoi(m_mon));Einen Blick in die MSDN darf man ruhig auch mal werfen...
-
Danke, hab das problem schon selber gelöst. Doch er rechnet die beiden Zahlen immernoch nicht zusammen ! Er gibt jetzt nur eine 0 aus ...
-
Hast du schon im debugger geschaut, wie der Inhalt der beiden Variablen aussieht?
Was liefert atoi zurück?
Teste mal so
int v1 = atoi(m_calc); int v2 = atoi(m_mon); calc2.Format(_T("%d"), v1 + v2);
-
Ist ein INT also
calc2.Format(_T("%i"), v1 + v2);Wenn etwas falschesa rauskommt solltest du mal schauen was in den CStrings drinsteht.
Dieser Code ist jedenfalls so richtig.
-
Also, es hat immernoch nicht geklappt. Ich habe m_mon und m_calc überprüft.
In m_mon und m_calc sind die richtigen Zahlen enthalten. Aber merkwürdig ist, dass in atoi(m_calc) und atoi(m_mon) nur jeweils eine 0 entahlten ist ! Egal wie ich es schreibe, ob Format oder nicht, ob "%d" oder "%i", es steht immer nur eine 0 in beide Variablen ! Und wenn ich es wie am Anfang schreibe :
m_mon + m_calc dann rechnet er die beiden Zahlen, die in den Variablen enthalten sind, nicht zusammen, sondern er schreibt dann 1,20 1,30 anstatt 2,50 ... Könnte es daran liegen, dass m_mon eine Edit-Box und m_calc ein Static-Text ist ??? An irgendetwas muss es ja liegen...
-
Also, es hat immernoch nicht geklappt. Ich habe m_mon und m_calc überprüft.
In m_mon und m_calc sind die richtigen Zahlen enthalten. Aber merkwürdig ist, dass in atoi(m_calc) und atoi(m_mon) nur jeweils eine 0 entahlten ist ! Egal wie ich es schreibe, ob Format oder nicht, ob "%d" oder "%i", es steht immer nur eine 0 in beide Variablen ! Und wenn ich es wie am Anfang schreibe :
m_mon + m_calc dann rechnet er die beiden Zahlen, die in den Variablen enthalten sind, nicht zusammen, sondern er schreibt dann 1,20 1,30 anstatt 2,50 ... Könnte es daran liegen, dass m_mon eine Edit-Box und m_calc ein Static-Text ist ??? Oder liegt es daran, dass ich Zahlen mit Kommatas verwende ??? An irgendetwas muss es ja liegen...
-
Es scheint das du Fließkommazahlen in deinen strings hast!
Dann geht das natürlich nicht. Benutze stattdessen folgendescalc2.Format(_T("%.2f"), atof(m_calc) + atof(m_mon));atof = ascii to float
%.2f = float format mit 2 Nachkommstallen
-
Wie soll ich das denn nun schreiben ??? CString`s addiert er nicht...Und mit dem ClassWizard kann ich keine int`s (etc.) erzeugen nur CString`s...
Ntürlich geht das!! Ist das ein Steuerelement?(Wo du m_calc einliest?)