ASSERT bei SetWindowText()
-
Hallo
ich habe in einem Dialog eine Combobox mit der ich verschiedene Sprachen auswählen kann. Wenn ich nun auf eine andere Sprache umstelle lade ich aus einem externen Dokument die Strings in ein Stringarray (pDoc->szString[100])
und aktualisiere die Ansicht mit pView->UpdateStrings().
Da bekomme ich dann eine Unbehandelte Ausnahme: Zugriffsverletzung in CWnd::SetWindowText.void CXXXView::UpdateStrings(void) { CXXXDoc* pDoc = (CSipromTDoc*) (GetDocument()); /* Mainview */ m_HeadlineParameter.SetWindowText(pDoc->szString[1]); m_HeadlineValue.SetWindowText(pDoc->szString[2]); m_HeadlineUnit.SetWindowText(pDoc->szString[3]); m_HeadlineState.SetWindowText(pDoc->szString[4]); }Was habe ich falsch gemacht?
-
Sind den die m_Headline... wirklich Wnds die zu dem Zeitpunkt auch existieren?
-
Die sind in meiner Ansichtsklasse. Die Funktion UpdateStrings() rufe ich in der OnApply()-Methode meiner TabCtrl auf.
Sie sollten doch eigentlich existieren wenn sie in der Ansichtsklasse sind.
-
Also die Fenster existieren zu diesem Zeitpunkt doch nicht.
Wie könnte ich nun aus der OnApply-Methode heraus die Ansicht aktualisieren?
-
Um etwas zu aktualisieren muss das was Du aktualisieren möchtest auch existieren.
Du kannst auch nichts auf Vorrat aktualisieren. Dein View muss sich die texte bei Bedarf aus den Sprachressourcen holen.
-
Aber wie kann ich nun veranlassen das wenn die TabCtrl verlassen wurde und die Windows in der View wieder existieren dass die Funktion UpdateStrings() aufgerufen wird?