Warum funktioniert UpdateData() nicht
-
Hallo habe folgenden Quellcode:
void CMietView::OnSelchangeName() { UpdateData(TRUE); FillEdits(); //In Reg aktuelle endwerte lesen für den jeweiligen kunden der ausgewählt wurde //und anzeigen CRegKey key; CString str; char buffer[100]; DWORD dwCount = sizeof(buffer); double v; str = "Software\\AK\\Data\\"; str += m_strName; if (key.Open(HKEY_CURRENT_USER, str, KEY_READ) == ERROR_FILE_NOT_FOUND) { AfxMessageBox("Error: Datensatz nicht vorhanden"); } key.QueryValue(buffer, "StromNew", &dwCount); m_StromOld = atoi(buffer); key.QueryValue(buffer, "StromPubNew", &dwCount); m_StromPubOld = atoi(buffer); key.QueryValue(buffer, "WaterCold", &dwCount); m_WaterColdOld = atoi(buffer); key.QueryValue(buffer, "WaterWarm", &dwCount); m_WaterWarmOld = atoi(buffer); key.Close(); AfxMessageBox(m_strName); UpdateData(FALSE); }Jetzt interessiert mich warum wenn ich in meinem Kombinationsfeld nen anderen Wert auswähle er mir diesen nicht Aktualisiert, funktionieren tuts nur wenn ich das letzte UpdateData(FALSE) weglasse, dann aktualisiere ich aber nicht die Steuerelemente!
PS:warum kann ich mit
key.QueryValue(buffer, "WaterCold", &dwCount);keine Werte größer als 9 auslesen?
-
Ich errinnere mich dunkel an die Aussage:
"UpdateData darfst du in OnSelChange nicht benutzen."Da wurden glaube ich irgendwelche internen Mechanismen ausgehebelt. Versuch es über Controlvariablen.
-
und wie aktualisiere ich dann all meine Steuerelemente, das hgeht doch nur mit UpdateData oder gibs da noch was?
-
Du kannst, wenn du eine Membervariable zu (z.B.) einem Edit anlegst, statt "Wert" "Control" auswählen.
Diese Variable kannst du dann mit GetWindowText und SetWindowText bearbeiten. Oder auch SetCheck, GetCheck usw.
Kommt auf den Variablentyp an. Es wird dir schon immer was passendes vorgeschlagen.Du kannst auch mit GetDlgItem arbeiten statt mit den Controlvariablen - das finde ich aber unsicher.