Timer Problem
-
Hey,
habe ein Problem mit den Eingabefeldern sobald ein Timer auslöst.void CGrundSDIView::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == ID_COUNT_TIMER_BERECHNEN) { UpdateData(TRUE); m_Kosten3 = m_Kosten1 + m_Kosten2; UpdateData(FALSE); } }Die Variablen "m_Kosten1 bis 3" sind Variablen von Eingabefeldern in einer SDI-Anwendung. Das Problem ist, immer wenn ich gerade eine Zahl eingeben möchte, wird diese wieder gelöscht wenn der Timer auslöst.
Schuld daran glaube ich ist das "UpdateData(TRUE)".
Ich möchte also nur Normal im Dialog Zahlen eingeben können ohne das mir der Timer dazwischenfunkt.Ich habs auch schon anders probiert:
void CGrundSDIView::OnTimer(UINT_PTR nIDEvent) { if (nIDEvent == ID_COUNT_TIMER_BERECHNEN) { nZahl1 = GetDlgItemInt(IDC_EDIT9);//m_Kosten1 nZahl2 = GetDlgItemInt(IDC_EDIT15);//m_Kosten2 nZahl3=nZahl1 + nZahl2; SetDlgItemInt(IDC_EDIT27, nZahl3);//m_Kosten3 } }Hier ist aber das Problem, das ich double Zahlen habe u. das passt nicht mit
"GetDlgItemInt" zusammen (Datenverlust int zu double).
Gibt es "GetDlgItemInt" nicht für double?
-
testprog schrieb:
Gibt es "GetDlgItemInt" nicht für double?
Nein, da kannst du GetDlgItemText nehmen und nach double umwandeln.
-
davon mal absesehen das der 2 fall mit GetDlgItemInt nicht geht, sehe ich eher das du ein Problem mit der inplementierung, hast, als ich würde das nie auf einen Timer legen, man weiss nicht wann der user was eingibt und dann wird sinnlos periodich berechnet. Ich Würde dafür das EN_CHANGE der beider Editfelder 1 und 2 benutzen, da 3 ja eh nur das Ergebnis beinhaltet
-
Jetzt kenne ich mich aus.
Danke euch beiden.