Hallo!
Ich habe folgendes Problem:
Ich habe ein SDI-Fenster mit Document-Ansicht-Architektur-Unterstützung in VC++ mit der MFC erstellt.
Dann habe ich ein geteiltes Fenster mit hilfe einer CSplitterWnd-Klasse erstellt. Die Linke Seite ist von der Klasse CTreeView und die Rechte Seite von der Klasse CFormView abgeleitet. Dann rief ich vom Hauptrahmenfenster aus die Funktion TestenObEsGeht() in der Rechten Fensterhälfte auf.
Diese Funktion soll einen Button aus dem Formular in der Rechten hälfte mit hilfe der Memberfunktion EnableWindow() deaktivieren.
Also habe ich eine Membervariable mit hilfe des Klassenassistenten hinzugefügt und mit dem Button verbunden.
Als ich EnableWindow(false) für diesen Button aufrufen wollte erhielt ich eine Assertion, der ich nachging:
BOOL CWnd::EnableWindow(BOOL bEnable)
{
ASSERT(::IsWindow(m_hWnd)); // Diese hier ist es
if (m_pCtrlSite == NULL)
return ::EnableWindow(m_hWnd, bEnable);
else
return m_pCtrlSite->EnableWindow(bEnable);
}
Aber das kann doch garnicht sein: Ein Button muss doch deaktiviert werden können, das geht doch auch bei einer Dialogbasierenden Anwendung.
Und übrigens:
Wo ich EnableWindow(false) aus der Funktion OnInitialUpdate() aufgerufen hatte ging es! Ist doch irgendwie merkwürdig
Mman den Button villeicht irgentwie anders einstellen oder wie???
Ich danke schonmal jeden der mir hilft, und sich diesen langen Text durchgelesen hat.
Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge
wenn dieser assert zuschlaegt, dann bedeutet das schlicht und ergreifend das das mfc fenster das du enablen moechtest kein windows fenster zugeordnet hat. das kann alle moeglichen gruenden haben, aber welches es konkret ist ist ohne den passenden quellcode schlecht zu sagen....
WM_HOPETHISHELPS
thomas woelfer