Problem bei Registerkarten Wechsel TabCtrl
-
Hi,
hab ein Problem mit TabCtrl und ich kann mir nicht erklären was da falsch läuft.
Es soll eine dynamische Registerkartei erstellt werden, bei der zur Laufzeit
Karten gelöscht und hinzugefügt werden können.
Mein Problem liegt jetzt beim Wechsel der Karteikarten. Wird ein Reiter angeklickt
muss die entsprechende Karte, sprich dieser Dialog aktiviert werden.
Soweit funktioniert das, der richtige Dialog wird angezeigt, nur kann ich die
Steuerelemente dieses Dialogs nicht bedienen.
Es sind immer noch die Steuerelemente des zuletzt hinzugefügten Dialogs aktiv, obwohl dieser nicht mehr angezeigt wird.
Hiermal der Code eine Registerkarten Wechsels:void CMessListe::SetDlgAktiv(int id) { CMessAufgabe* temp; temp = m_head; do { //ist das Element die aktuelle Karte? if(temp->m_iID == m_iaktElement) temp->UpdateData(true); //Member sichern //ist das Element die neue Karte? if(temp->m_iID == id) { //Dialog sichtbar und aktiv setzen temp->ShowWindow(SW_SHOW); temp->SetFocus(); temp->UpdateData(false); } else { //Alle anderen deaktivieren temp->ShowWindow(SW_HIDE); } temp = temp->nextElem; }while(temp != m_tail); }Die einzelnen Karteikarten hab ich in einer einfach verketteten Liste
untergebracht. Ist wohl nicht die einfachste Art, aber ich fand es für meine
Zwecke am geeignetsten.
Ich hoffe mir kann jemand weiterhelfen.Gruss charlie
-
Sorry.. war mein Fehler! Es funktioniert jetzt. Das kommt davon wenn man so doofe Schleifen programmiert
-
Wäre prima, wenn du mal genauer mitteilen könntest, was das für ein Fehler war.
Also, wenn du Zeit und Lust dazu hast, würde mich nämlich interessieren.
-
Das Problem war, dass die Schleife eins zu kurz war. Durch die Tatsache das ein neuer
Dialog am Ende der verketteten Liste angehängt wird, wurde dieser durch die zu kurze
Schleife bei einem Wechsel nicht mit ShowWindow(SW_HIDE) deaktiviert.
-
Ach so, danke. Hilft mir leider nicht wirklich bei meinen TabControls. Der eine weigert sich, auf SetActivePage zu reagieren und zeigt die Steuerelemente von einem anderen Dialog an. Naja, mal weiter suchen...