Klassenfrage
-
Und zwar hab ich folgendes Problem:
Ich habe zwei Dialoge, die jeweils mit einer Klasse "verbunden" sind. Nun möchte ich von einer Klasse auf die andere Klasse zugreifen, um ein Steuerelement zu "manipulieren". Ich habe folgendes probiert: 1. Klasse includiert, 2. ein Obj. der Klasse erstellt (oder gibts schon ein Obj.???). Dies funktioniert aber nicht.
Wie kann ich dies nun bewerkstelligen???
Danke, für eure Mühe!!!
Cu CaseModder
-
Neue Instanz erstellen wird nicht klappen, weil du dann 3 Dialoge hast.
Gib dem einen einen Zeiger auf den anderen mit und nutze den.
-
Hmm, das hatte ich mir fast gedacht, das des nich fkt. kann. Würde ja sonst en neues Obj. erstellt.
Das mit nem Pointer hab ich auch ma probiert, aber nich ganz hinbekommen.
Kannst du mir mal bitte ne Anregung bringen, wie ma das machen kann???
Danke CaseModder
-
Zeig mir den Code, wo du die beiden Dialoge aufrust und ich guck mal.
-
Also ich kann dir jetzt keinen Code anbieten. Aber ich erkläre nochmal, wie ich es genau meine:
- Ich habe einen Hauptdialog.
- Über diesen Dialog wird ein weiterer "Unterdialog" aufgerufen.
- In dem Hauptdialog gibt es das Steuerelement CListCtrl, welches bestimmte Werte enthält.
- Ich möchte nun über den Unterdialog auf das Steuerelement CListCtrl die Funktion GetItemCount(); aufrufen.Ich weiß bloß nicht wie. Auch nicht mit Pointern, da ich das noch nicht so oft gemacht habe. In der MSDN steht auch was mit Pointer aber das lässt sich nicht wirklich auf mein Problem anwenden.
Ich hoffe das reicht für eine Erklärung?!
Danke für eine Lösung
CaseModder
-
Okay, die Beschreibung reicht auch.
Also, dem Unterdialog spendierst du eine Membervariable (der Einfachheit halber public):
COberDialog* m_pDialog;
Im Oberdialog macht du die Membervariable vom Listcontrol public.
Dann rufst du den Unterdialog so auf:
CUnterDialog dlg; dlg.m_pDialog = this; dlg.DoModal();
Und nun kommst du vom Unterdialog an das Listcontrol:
m_pDialog->m_lscListControl.GetItemCount();
Das ist eine Lösung von vielen. Sie ist nicht elegant und schon gar nicht sicher - aber einfach.
Um sie eleganter und sicherer zu machen, sollte man die Zeiger auf NULL prüfen und die Variablen protected machen und stattdessen Get- und Set-Funktionen nutzen.
Aber das kannst du ja noch nachholen.
-
Ok, danke erstmal für deine Hilfe.
Probiers gleich ma aus.Cu CaseModder