Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

1

21.07.2005, 14:58

Tab items in Tab Control disablen/enablen

Moin,

ich steck mal wieder in der Klemme.
Ich hab in c++ und MFC eine GUI gemacht. In einem TabControl hab ich vier Dialoge zusammengepackt, die miteinander interagieren. Das war ja schon ein Krampf mit MFC. Jetzt sollen die einzelnen Dialoge(TabItems) enabled- bzw disabled werden können. Je nach Einstellung sollen dann einige Tabs enabled werden, andere nicht und bei wenn man andere Einstellungen wählt sollen wieder andere disabled werden.

Ich könnte die einzelnen Tabs nat. zur Laufzeit immer wieder erzeugen und löschen, aber man soll in meinem Programm immer alle "Reiter" sehen, nur das einige halt zugänglich sind und andere nicht.


Kann mir jemand sagen, wie ich das in meine Anwendung einbauen kann?

mfg
Andi

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

21.07.2005, 15:28

Tja also ich habe das mit Winapi gemacht und da kann man einfach windowsenable(true/false) machen :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

3

21.07.2005, 15:46

aha, ist das das gleiche, wie wenn man im Visual Studio .net mit links- Klick auf einen Dialog, seine Eigenschaften ändern kann? Da ist auch eine Einstellung "Deaktivieren". Nur ob ich da true oder false einstelle, der Dialog ist immer enabled. Das find ich übrigens schon ein bisschen merkwürdig. Aber vieleicht is noch irgendwo ´ne Einstellung, die das aufhebt. ???

lg
Andi

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

21.07.2005, 16:12

du musst den hanlde des reiter bekommen und den disablen
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

5

21.07.2005, 16:29

und wie krieg ich den handle des Dialogs und disable diesen?

Sorry, aber ich doch noch nich so viel Ahnung. Das mit den handles is mir eh ein bisschen susspekt.

6

21.07.2005, 23:05

also, du brauchst ne Variable von deinem TabItem(in deinem Fall vermute ich, ein Dialog). Den setzt du dann über die Variable auf disabled. Oder, soweit CTabCtrl das unterstütz auch von da aus, aber ich hab noch nciht die passende Funktion gefunden, es gibt wohl eine zum highlighten, aber das bringt ncihts...


Also, nen pseudocode:

CDialog m_tab1;

m_tabctrl->InsertItem(m_tab1);

m_tab1->EnableDialog;
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

7

22.07.2005, 14:56

Moin,

hab die ganze Zeit versucht den Pseudocode umzusetzen, aber es klappt nich.

Hier mal ein bisschen QuellCode:

Hab ein paar Klassen zur CTabCtrl hinzugefügt, die das Erstellen etwas erleichtern(hab ich irgendwo im Web gefunden):

void CibTabCtrl::AddTabPane(CString strCaption,CDialog * pDlg)
{
TabCaptions.Add(strCaption);
TabPanes.Add(pDlg);
TC_ITEM tci;
tci.mask = TCIF_TEXT;
tci.pszText = (LPSTR)(LPCTSTR)strCaption;
tci.cchTextMax = strCaption.GetLength();
InsertItem((TabCaptions.GetCount()-1),&tci);
}

___________________________________________________________

In meinem Quellcode sieht das so aus:


p1 = new CTabPageOne();
p1->Create(IDD_DIALOG1,m_ctrltab.GetWindow(IDD_DIALOG1));
p2 = new CTabPageTwo();
p2->Create(IDD_DIALOG2,m_ctrltab.GetWindow(IDD_DIALOG2));
p3 = new CTabPageThree();
p3->Create(IDD_DIALOG3,m_ctrltab.GetWindow(IDD_DIALOG3));

m_ctrltab.AddTabPane("General Options",p1);
m_ctrltab.AddTabPane("Scanning parameter",p2);
m_ctrltab.AddTabPane("Viewport parameter",p3);

__________________________________________________________

p1, p2, p3 sind Instanzen meiner Dialoge, die im TabControl verknüpft sind. Das läuft auch alles ganz gut.

Hab schon versucht mit p1->EnableWindow(FALSE); die Fenster zu deaktivieren, aber das geht auch nich.

Ich weiß nich mehr weiter!!

Andi

8

22.07.2005, 15:20

ok, das mit enablewindow(false) hätte ich auch als das wahrscheinlichste gehalten... evt. noch mit CloseWindow() bei nem zeiger auf das ctabctrl.. sonnst hab ich jetzt gerade auch keine idee, außer den dialog jedesmal zu zerstören.. oder guck mal bei codeproject und codeguru, ob die nciht ne schöne klasse dafür bereitstellen -.-
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Andi

Frischling

  • »Andi« ist der Autor dieses Themas

Beiträge: 37

Beruf: Student

  • Private Nachricht senden

9

22.07.2005, 20:48

Moin,

das mit CloseWindow() werd ich mal testen. Hab ansonsten bei CodeProject ´ne interessante Klasse gefunden, kann aber zur Zeit noch nicht so recht nachvollziehen, wie das ganze funktioniert.
Aber ich schaff das noch irgendwie. ;) Das mit dem Dialog zerstören funktioniert, hab ich schon mal probiert, aber das wollt ich eigtl. nicht unbedingt,is aber noch ´ne letzte Option falls ich nichts hinkrieg.

Vielen Dank schonmal und ich bin auch weiterhin für jede Idee dankbar.

Viele Grüsse
Andi

Werbeanzeige