TabControl erzeugen
-
VC6? oder höher?
-
VC6++ (der Prof will es so
)... aber warte eben, ich glaube ich habs gleich. Mr ist aufgefallen, dass der Hauptdialog in der Header-Datei als Klasse definiert ist und der optionale About-Dialog in der cpp-Datei. Ergo habe ich auch mal den neuen Dialog direkt dadrunter als Klasse eingetragen und er scheint es zu akzeptieren (ist sicher unschön zwei Klassen in einer cpp-Datei zu deklarieren oder?).
Im Moment habe ich wohl die Verbindung zu DynTabCtrl nicht richtig, denn er erwartet bei InsertItem() immernoch einen int statt einer Klasse. Das finde ich sicher noch raus wieso.
-
Also, für VC6 wäre Schritt 5 ganz einfach:
Die Ressource angucken.
Strg+W drücken (Klassenassistent öffnen)
Dialoge beantworten
Fertig... du hättest eine neue Klasse in einem eigenen H+cpp Dateipärchen.Also falls dein Weg nicht klappt, versuch es so mal.
-
Hmmmm prinzipiell funktionierts, aber nur mit dem Standard CTabControl, und da sehe nur meine 3 Tabs, aber keine Spur von den Inhalten. DynTabCtrl bekomme ich nicht eingebunden. Ich kann im Header zwar aus "CTabCtrl m_TabCtrl" ein "DynTabCtrl m_TabCtrl" machen, aber dann bekomme ich beim Linking einige unresolved symbols... die DynTabCtrl.h ist aber oben im Kopf included.
-
Hast du die beiden Dateien zu DynTabCtrl auch dem Projekt hinzugefügt?
unresolved symbols heißt, dass was im Cpp fehlt - oder eben das ganze Cpp oder eine lib.
-
Ahhh
Hatte es nur included... jetzt klappts, danke für Deine Hilfe!
-
So, nun hänge ich wieder fest: Ich möchte eine Bitmap auf einen Tab zeichnen. Ich habe das Bitmap bereits created und mit einer Farbe gefüllt und ich muss es nur noch zeichnen (ich benutze eine Bitmap.dll von der Uni):
myBitmap.EnableDisplay(&myDialog1(),0,0,200,30);
myDialog1 ist mein Tab Nr.1, er akzeptiert es, aber ich sehe nichts. Ersetze ich das Tab durch "this" dann sehe ich die Bitmap auf meinem Hauptdialog. Das "&myDialog1" stimmt also nicht, was muss dahin?
EDIT: Ich schreibe immer zu schnell ins Forum, sorry
GetTab() war die Lösung...
-
Wieder etwas zu diesem Thema: Diesmal versuche ich ein RichEdit-Control auf ein Tab zu legen. Wenn ich das Programm dann aber starten will, bricht er mit der Fehlermeldung ab, dass Tab XY nicht created werden könne. Entferne ich das RichtEdit wieder, klappt es wieder. Wieso?
-
Akutes Problem:
Ich habe die Klasse in mein Projekt eingebunden und habe nach Anleitung Objekte erzeugt. Nun ist es so, dass beim Einfügen des 1. Dialog-Tabs im Konstruktor des Haupdialoges (dort, wo das DynTabCtrl drin ist) der entspr. Unterdialog nicht erzeugt wird:
XNAPConfDlgMain::XNAPConfDlgMain(CWnd* pParent, void *pParams, int iParamSize) : CDialog(XNAPConfilDlgMain::IDD, pParent) { m_tctrlDynConfigMain.InsertItem(new ConfigDialog(), "Parameter", IDD_CONFIGDIALOG); }
Das Erzeugen des Tabs bricht in DynTabCtrl::InserItem() ab:
int DynTabCtrl::InsertItem(CDialog * dlg, CString titel, UINT ID) { if(!dlg->Create(ID,this)) { MessageBox("Create von " + titel +" fehlgeschlagen"); delete dlg; dlg =NULL; return FALSE; } ... }
dlg->Create() ist nicht erfolgreich. Warum?
-
Hallo,
ups, sorry, fehler!pixel
-
Könnte trotz des luschigen Zwischenrufes, bitte jemand qualifiziert auf meine Frage 15cm weiter oben antworten?
-
Hi,
ich wollte selber etwas fragen aber da dachte ich der thread ist zu alt und keiner würde antworten, ich möchte die tabs mit unterschiedlichen text-farben beschriften,
k.a. wie das gehen soll, wo ist dein problem, ich benutze auch das selbe ohne probleme, welche fehlermeldung hast du?.InsertItem(new DeinNewDlg(), L"Überschrift für Tab", IDD_DEIN_NEW_DIALOG);
so sollte es doch gehen???
ah ja, und ich benutze CDialog...grüsse
pixel
-
phlox81 schrieb:
Es geht auch ohne CPropertysheet.
Schau dir mal meine Klasse DynTabCtrl
an, du musst dann einfach nur die Dialoge erstellen, und statt CTabCtrl
DynTabCtrl nehmen, und per Insert(CDialog*,CString titel, UINT ID) einfügen.Devil
Hi phlox81,
das habe ich versucht, doch leider meldet er mir unverständlicher Weise beim Kompelieren immer folgenden Fehler:
...\DynTabCtrl.cpp(121): error C2039: 'find' : Ist kein Element von 'std'
Ich bin wie folgt vorgegangen:
1. DynTabCtrl.cpp + DynTabCtrl.h in mein Projekt eingefügt
2. DynTabCtrl.h in den Header des Hauptdialoges eingefügt
3. Member-Var gesetzt im Hauptdialog-Header: DynTabCtrl mCtrl_Tab_Suche;Und danach zum Testen kompeliert.
Woran kann das liegen?
Danke für Deine Hilfe!
Gruß,
Elayas
-
Hat keiner eine Antwort auf die Frage von F98? Ich hab nämlich das gleiche Problem.
-
Habs doch slber gefunden. Bei mir fehlte DDX_Control(pDX, IDC_TABCONTROL, m_TabControl); in DoDataExchange.
-
Auch ich habe den Fehler bekommen
error C2039: 'find': Ist kein Element von 'std'
Es lies sich aber nicht abstellen durch die Änderung von Tyrdal. Hab ich irgendwo vergessen was einzutragen?
Viele Grüße und dank im Voraus,
Ranger
-
find müsste in <algorithm> definiert sein. Einfach als Header einbinden.
-
Hallo phlox81,
Ich danke Dir. Jetzt kommen nur noch Warnungen wegen Typumwandlungen, aber die könnte man mit einem cast umgehen oder "abschalten".
Nochmals vielen Dank
Ranger
-
Hallo,
habe auch mit der Methode von Phlox ein TabControl erzeug, nur passiert nun beim Ausführen iommer folgender Fehler:
Das Programm startet ganz normal und an der Stelle, als es in den Dialog mit der TabCtrl springt, kommt folgende Meldung:
Create von "Identify"(der Name des Dialogs, der im Tab angezeigt werden soll)
fehlgeschlagen.
Das passiert dann bei allen Tabs.Kann mir da jemand weiterhelfen???
-
Hm, is ne weile her das ich die Klasse selber benutzt hab,
aber kanns sein das deine Dialoge den falschen Rahmen etc. haben?
Sie müssen Randlos sein, und sonst auch noch irgendwelche Einstellungen haben,
kann mich aber nicht genau daran erinnern.In wxWidgets ist das alles schon eingebaut