Aktuelle Uhrzeit anzeigen lassen...

.. hmm. keine Ahnung, warum die Zeit nicht angezeigt wird. Da etwas angezeigt wird, kann es an dem Control eigentlich nicht liegen. Gib den formatierten String doch mal testweise mit TRACE aus oder hol dir die Werte einzeln:
Code:
CTime mytime = CTime::getCurrentTime();
CString timestr;
int h,m,s;
h = mytime.getHour();
m = mytime.getMinute();
s = mytime.getSecond();
timestr.Format("%d:%d:%d",h,m,s);

Gruß
 
Hi nochmal und Danke für deine Antwort!

Könnte es evtl. sein, dass ich das ganze bei der falschen Funktion rein schreibe? Ich schreibs ja zur Zeit bei "OnEnUpdateEdit2" rein... Weil einzelnd funktioniert das ganze leider auch nicht! Es steht jetzt aber auch kein nuller mehr in dem Feld.

Danke!

kjh
 
Fragen wir doch einmal anders rum: Wann möchtest Du die Zeit denn angezeigt haben? Als Herangehensweise zur Fehlersuche schlage ich folgendes vor:

- setze zunächst in OnEnUpdateEdit2 folgendes:
Code:
m_testvar2.SetWindowText("Hallo, da bin ich!");
Wenn das angezeigt wird: gut, dann funktioniert zumindest das!

- Ansonsten: setze testweise einen Button auf das Formular:
Code:
void Ctest5Dlg::OnBnClickedTestbutton() {
    // m_testvar2.SetWindowText("Hallo, da bin ich!");
    // ... oder wahlweise die Zeitanzeige
}
Außerdem würde ich die Variable "mytime" vielleicht global definieren.

Gruß
 
Datic, Vielen Dank für deine kompetente Hilfe!

Funktioniert jetzt eigentlich so wie ich es wollte! Nur noch zwei kleine Schönheitsfehler, sind aber nicht unbedingt ein Muss...

- Ist es möglich, dass die Zeit dann "Real-Time" weiterläuft?
- Ist es noch möglich, dass man bei der Lösung, wo ich mir einzelnd die Daten 'ziehe' (Stunde, Minute, Sekunde), irgendwie immer auf zweistellig aufzufüllen bei den Zahlen (statt 9:1:1 Uhr --> 09:01:01 Uhr)? Weil ich drüber bin mir was zu bauen, wo ich mir verschiedene Zeitzonen anzeigen lassen kann. Mach das halt ganz einfach so: h-1; z.B.

Also wären absolut nur "Schönheitsfehler"!

Nochmals Vielen Dank!

kjh
 
Hi,

1. Hab ich noch nie gemacht, aber ich würde mal hier schauen:
Code:
CWnd::SetTimer
CWnd::OnTimer
damit sollte man sich eine Methode bauen können, die regelmäßig (z.B. jede Sekunde) aufgerufen wird.

2. Schau in der Hilfe nach den Flags/Prefixes der printf-Methode. Die Format-Methode arbeitet IMHO mit den selben Parametern - vorangestellte Nullen sollten auch damit möglich sein.

Gruß
 
Hi Datic,

hab jetzt mal beides ausprobiert! Also zu 1. Da versteh ich nicht ganz wie ich das aufrufen soll gegenseitig, weil man ja ein Start, OnTimer und ein KillTimer.

Mein versuch, vorallem bereitet es mir auch Kopfzerbrechen wie ich dann meine Uhrfunktion da so aufrufen lassen soll...

Code:
void Ctest7dropdownDlg::OnStartTimer() 
{
   SetTimer(1, 5000, 0);
   OnTimer()
   {
	   MessageBox("hallo");
   }
}

Meine OnChangeFunktion:
Code:
void Ctest7dropdownDlg::OnCbnSelchangeCombo1()
{

	OnStartTimer(); //?

	CString strText;
	CString GMT  = "GMT UK,Ireland, Portugal";
	CString GMTplus1  = "GMT+1 Frankreich,Deutschland, Niederlande";
//Weitere deklarationen folgen
	GetDlgItemText(IDC_COMBO1,strText);
	if (strText==GMT)
	{
		h = mytime.GetHour();
		h = h-1;
	}
	else
	{
		if (strText==GMTplus1)
		{
			h = mytime.GetHour();
			h = h;
		}
		
//Weitere IF-Else Abfragen folgen....
				}
			}

			}

		}
		this->time();

	}
}

Von der Uhrzeit "Auslese":
Code:
void Ctest7dropdownDlg::time()
{
	mytime = CTime::GetCurrentTime();
	CString timestr;
	m = mytime.GetMinute();
	s = mytime.GetSecond();
	timestr.Format("%2d:%2d:%2d",h,m,s);
	this->m_textfeld.SetWindowText(timestr);

}

Hmm... Es wird jetzt die Uhrzeit schon zweistellig angezeigt, jedeoch ist eben nur eine leere Stelle zusehen. Wie bekomm ich da jetzt eine null hin? Keine Ahnung wie die das mit dem prefixen meinen...

Nochmal Danke für deine Hilfe!

Grüße!

kjh
 
Hi,

... mit dem Timer kenne ich mich selbst nicht aus. Beim Versuch, das mal eben zu testen ist mir das Studio abgestürzt und ich hab die Motivation verloren... :rolleyes:

Zur Formatierung: ich würde es wirklich mit
Code:
CTime mytime = CTime::GetCurrentTime();
this->textfield.SetWindowText(mytime.Format("%H:%M:%S"));
machen, das geht am schnellsten.

Gruß
 

Neue Beiträge

Zurück