CTabCtrl: Einzelene Registerkarten "deaktiveren"
-
Hallo
Habe ein Registercontrol (DynTabCtrl, abgeleitet von CTabCtrl), welches 4 Dialoge als Registerkarten beinhaltet.
Jetzt möchte ich, dass man eine einzelne Registerkarte aktivieren und die restlichen deaktivieren (nicht entfernen) kann, damit der Benutzer diese zwar sieht, auf diese jedoch nicht zugreiffen kann.
Habe da Code geschrieben, aber das funktioniert so nicht richtig:
bool DynTabCtrl::enableTab(unsigned int iTabNo, bool bDeactivateOthers){ if(iTabNo > m_tabs.size()) return false; CDialog* dlg = GetTab(iTabNo); if(dlg!=NULL){ dlg->EnableWindow(TRUE); } else return false; if(bDeactivateOthers){ for(int i=0; i<m_tabs.size(); i++){ if(i!=iTabNo){ CDialog* dlg = GetTab(i); if(dlg!=NULL){ dlg->EnableWindow(FALSE); } else return false; } } } return true; } // Das erste Argument ist jenes Element (Register), welches aktiviert werden soll. // Das zweite Arg dient dazu, ob die anderen zu deaktivieren sind.
die Methode deaktivert zwar das Fenster, doch man kann immernoch auf das Register klicken. Was kann ich tun, damit dies unterbunden (auch optisch sichtbar) werden kann?
Danke für eure Hilfe!
-
Helfen dir das könnte:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-3454-and-highlight-is-deaktivieren+registerkarte.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-74955-and-highlight-is-setactivepage.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-64334-and-highlight-is-setactivepage.html
-
isabeau schrieb:
Helfen dir das könnte:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-3454-and-highlight-is-deaktivieren+registerkarte.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-74955-and-highlight-is-setactivepage.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-64334-and-highlight-is-setactivepage.htmlDanke für die Hilfe aber auch dort gibts leider keine Lösung für das Problem.
-
sky21 schrieb:
Danke für eure Hilfe!
Gebeten du hast um Hilf !
sky21 schrieb:
auch dort gibts leider keine Lösung für das Problem
Erwartet du hast eine Lösung ?
Keine Möglichkeit es ist abzuleiten ein CTabCtrl und abzufangen die Klicks ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-3454-and-highlight-is-deaktivieren+registerkarte.htmlKeine Möglichkeit es ist zurückzukehren mit SetActivePage(...) ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-74955-and-highlight-is-setactivepage.htmlKeine Möglichkeit du erkennst in bereits gescheiterten Versuchen anderer ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-64334-and-highlight-is-setactivepage.htmlDann nicht zu helfen dir ist, ich fürchte...
-
isabeau schrieb:
Gebeten du hast um Hilf !
Erwartet du hast eine Lösung ?
Keine Möglichkeit es ist abzuleiten ein CTabCtrl und abzufangen die Klicks ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-3454-and-highlight-is-deaktivieren+registerkarte.htmlDa steht nix drin, ausser dass die Poster dort dasselbe Problem haben
isabeau schrieb:
Keine Möglichkeit es ist zurückzukehren mit SetActivePage(...) ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-74955-and-highlight-is-setactivepage.htmlIst nur bei CPropertyPage verwendbar. Das brauch ich aber eben ned.
isabeau schrieb:
Keine Möglichkeit du erkennst in bereits gescheiterten Versuchen anderer ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-64334-and-highlight-is-setactivepage.htmlauch hier nur geheule, dass es nicht geht.
isabeau schrieb:
Dann nicht zu helfen dir ist, ich fürchte...
auf codeguru hat's was, aber die Klassen sind einfach zu kompliziert. d.h. ich ich kann den Code nicht wirklich nachbvllziehen, denn ich eigentlich bräuchte.
However, hab mich entschlossen eine fix-fertige zu übernehmen.. Problem gelöst, lerneffekt=0.Möge die Macht auch mir dir sein.
CheersAja noch was: Eigentlich sollte man ja ein Rechteck mit folgendem Code deaktivieren können:
CRect rec; GetItemRect(iTabNr, &rec); InvalidateRect(rec);
geht aber nicht ...
-
Invalidate heißt doch nur, dass es sich neu Zeichnen soll.
MSDN schrieb:
The invalidated rectangle, along with all other areas in the update region, is marked for painting when the next WM_PAINT message is sent.
Deaktivieren wäre doch disable oder so.