Welcher Message Handler um Buttons zu verschieben vor DoModal() ?
-
Hallo,
ich habe einen Dialog, den ich mit DoModal() anzeige.
Bevor dieser angezeigt wird, möchte ich aber die Buttons mit SetWindowPos() an die richtige Position verschieben und mit ModifyStyle() ein- oder ausblenden.
Das muss nicht nur einmal passieren, sondern abhängig vom aktuellen Zustand einer Variablen, also schlimmstenfalls werden die Buttons vor jedem DoModal() geändert.Nun habe ich diese Befehle in OnCreate() reingepackt.
Er springt dann allerdings mit einem Assertion-Fehler in die folgende Zeile der SetWindowPos() in der winocc.cpp:ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));Vermutlich sind die Buttons zum Zeitpunkt wenn die OnCreate() aufgerufen wird noch nicht richtig erzeugt. Es handelt sich übrigens um von CButton abgeleitete Custom-Controls, falls das von Bedeutung ist.
Welche On...()-Methode muss ich denn stattdessen verwenden, damit die Buttons schon erzeugt sind aber bevor der Dialog angezeigt wird?
Danke für eure Hilfe

DaOne
-
OnInitDialog nach Aufruf der Basisklasse.

-
Und wenn Du ON_UPDATE_COMMAND_UI in einem CDialog benutzen willst, um z.B. Buttons mittels des Inhalts von Membervariablen zu en-/disablen, dann siehe
http://www.codeguru.com/cpp/w-d/dislog/commandui/article.php/c1919/
-
Danke für eure Antworten, die OnInitDialog() war es auch schon.
Da hätte ich auch selber drauf kommen können, ich hatte die Methode bereits im Code drin. Nur irgendwie war mir nicht ganz klar, wie sich das DoModal() verhält. Darum dachte ich, OnInitDialog() wird nur einmal aufgerufen, beim ersten Anzeigen des Dialogs. Aber er wird ja jedesmal wieder neu erzeugt.
Grüße