CFormView-Äquivalenz zu CDialog::OnInitDialog?
-
Hi zusammen,
die Routine OnInitDialog, die beim Erstellen eines Dialoges aufgerufen wird, wie lautet denn dazu das äquivalent bei einer von CFormView abgeleiteten Klasse?
Danke!!!
Tobias
-
Morgen,
ich würde sagen entweder PreCreateWindow() oder OnInitialUpdate(). Wobei letzteres glaub ich jedesmal aufgerufen wird, wenn das CFormView ein UPdate empfängt, bin mir aber nicht so sicher.CIAO
Psyco
-
Hi, Danke, hat soweit auch geklappt...
Nur:
Ich versuche da einen CTabCtrl in ein CFormView einzubasteln.
Ich hab einen Beispiel-Code (weiss nur nicht mehr woher, nennt sich aber "TabCtrl").
Das ist eine Dialogfeld-Anwendung, in der in OnInitDialog folgendes getan wird:m_cTabCtrl.InsertItem(0, _T("Seite 1"));
Das klappt auch soweit.
Ich hab jetzt in meinem CFormView einen TabControl und mache in OnInitialUpdate dasselbe.
Allerdings bekomme ich einen "Debug Assertion Failed":ASSERT(::IsWindow(m_hWnd));
im Aufruf der Funktion InsertItem.
Jetzt ist meine Frage dazu:
Warum kann ich das nicht bei einem CFormView genauso machen, bzw. was bedeutet der Fehler genau?
Danke, Gruss, Tobias
-
Wenn Du Sachen auf das FormView basteln willst, musst Du das meine ich in der OnDraw Funktion machen, da bei der OnInitialUpdate Funktion das View noch nicht dargestellt wird (Da ist MSVC++ gaaaaanz streng
, denn wo nix ist, kann man noch nix darstellen).
Versuche mal Dein FomView in der OnDraw Methode erst zu füllen, dann sollte es klappen.CIAO
Psyco
-
Danke Psycho!
Ich teste das morgen mal und werd dann hier Bescheid geben, ob das klappt!
Gruss, Tobias
-
Hi,
also das hat doch mit OnInitialUpdate geklappt, aber:
ich muss in der überschriebenen Methode als erstes
CFormView::OnInitialUpdate()
aufrufen, dann klappt es!
Gruss, Tobias
-
ich muss in der überschriebenen Methode als erstes
CFormView::OnInitialUpdate()
aufrufenDiese Funktion wie Du schon schreibst, ist äquivalent zu OnInitDialog, und dort ruft man auch erst OnInitDialog der Basisklasse auf.