TabControl erzeugen
-
Es ist ein Unterdialog einer Applikation. Und OnInitDialog wird nun jedes mal aufgerufen wenn ich den Dialog über .DoModal aufrufe.
-
Du musst DestroyWindow gar nicht aufrufen und schon gar nicht im Destruktor!
Bei einem modalen Dialogpassiert hier alles "automatisch"!Dir muss klar sein, dass Du frühestens auf die Controls in einem alog zugreifen kannst wenn OnInitDialog gelaufen ist. D.h. nachdem Du DoModal aufgerufen hast!
-
Achso, klar. Die Klasse DynTabCtrl ist also nur für nicht modale Dialoge.
Was mich nun noch interessiert: Habe den Dialog mit den Tabs zur anzeige gebracht. Allerdings lassen sich die Controlls nicht bedienen. Woran liegt das?
-
Weil die Controls nicht enabled sind? Weil ein anderes Fenster im Vordergrund liegt?
Spy++ anwenden...
-
Und was ist wenn man den Dialog aber Modal haben will.
Habe bei mir das Destroy window rausgenommen. Aber wenn ich InsertItem mache. schlägt das Create fehl.
-
Weil die Controls nicht enabled sind? Weil ein anderes Fenster im Vordergrund liegt?
Controlls sind enabled. Und normalerweise sollte kein anderes Fenster im Vordergrund sein. Aber wo sehe ich das im Spy++
-
Wenn Du auf Fensterauswahl gehst und über die Controls drüber hoverst.
-
Ja das geht. Das heißt es liegt kein Fenster darüber. Woran liegts dann?
-
Und wie muss man die Klasse DynTabCtrl umbauen dass es für modale Dialoge auch geht?
-
Das gibt es doch nicht.
Habe mir die Klasse DynTabCtrl heruntergeladen und bin genau nach Anleitung vorgegangen. Es wird alles angezeigt, aber die Controlls lassen sich einfach nicht bedienen.
-
Oh Sorry. Habs rausbekommen. Habe als Vorlage Propertysheets genommen für meine Dialoge die sind standardmässig deaktiviert. Wieso auch immer. Habe nur auf die einzelnen Controlls geschaut.
Jetzt stellt sich für mich aber auch noch die Frage: Geht das ganze auch für Modale Dialoge?
-
na sicher geht das auch auf modalen Dialogen, steht zumindest nix im Weg, ist doch ne abgeleitete Klasse von CTabCtrl die geht doch auch auf Modalen Dialogen
-
Ja aber wann rufe ich dann InsertItem auf. Im Konstruktor gehts nicht und in OnInitDialog geht auch nicht da die Methode ja öfters aufgerufen wird.
-
Und wie geht das nun?
-
wieso OnInitDialog wird doch nur einmal für das Initialisieren des Dialogs aufgerufen. Bei mir wurde die noch nie 2 mal aufgerufen, oder du hast ein Design-Fehler in deinem Programm
-
OnInitDialog wird bei jedem .DoModal aufruf aufgerufen. Oder etwa nicht?
-
Schreiber A schrieb:
OnInitDialog wird bei jedem .DoModal aufruf aufgerufen. Oder etwa nicht?
Aber wenn DoModal das nächste mal aufgerufen wird, dann ist doch das List Control leer...
Was soll dieser Einwand?
-
Aber wenn DoModal das nächste mal aufgerufen wird, dann ist doch das List Control leer...
Ja eben nicht. Das Controll ist ja ein Member der Klasse. Und nach dem DoModal und schliessen des Dialogs ist das Controll immer noch vorhanden. Und der der Inhalt ist nicht leer.
-
Dann hast du sicher deine Klasse mit new() erzeugt und ncht wieder gelöscht. Erstell die auf den Stack und dann ist die auch beim nächsten Aufruf nicht Initialisiert, oder lösch die Klasse mit Delete() wenn DoModal beendet wurde.
-
Ich habe die Klasse auch wiederum als member angelegt. Damit ich nach schliessen des Dialogs Zugriff habe auf die Daten des Dialogs.