Wie übergebe ich eine Pointer to Pointer Adresse zwischen Doc und FormView
-
Hi @all!
SDI Anwendung:
In der Document Klasse erzeuge und fülle ich einen Buffer auf dem Heap.//Header ...doc
CMyClass** pMyList;//CPP ...doc
pMyList = (CMyClass**)GlobalAlloc(GPTR, sizeof(CMyClass*) * n); for(int i = 0; i < n; i++) pMyList[i] = new CMyClass;...so nun mein Prob: Ich möchte in der FormView Klasse auf diese Buffer-Liste zugreifen. Also muss ich doch die Adresse des Pointers irgentwie rüber kopieren, die im Heap auf pMyList zeigt oder? Und dann sollte ich in der FormView auf die einzelnen Buffer mittels pMyList[i]->irgentwas zugreifen können?
In der FormView Header hab ich den Typ, mittels CMyClass** pMyList2 schon bekannt gemacht, nur die Stelle im Heap ist noch unbekannt.
Kann mir jemand dazu ein Code-Beispiel machen? Oder nen Ansatz?
Denn meine bisherigen Versuche klappen nicht :((CMyFormView* pView = new CMyFormView(); //geht nicht, FormView protectet pView->pMyList2 = pMyList;Bin dankbar für jede Idee!

-
Mit GetDocument bekommst du zugriff auf DOC. Mehr brauchst du ja auch nicht.
-
meinst du diese Funktion?
CLightsConfiguratorDoc* CLightsConfiguratorView::GetDocument() const // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CLightsConfiguratorDoc))); return (CLightsConfiguratorDoc*)m_pDocument; }m_pDocument->... beinhaltet aber nicht meine selbst angelegten Funktionen und Variablen
-
Aloha,
feisX schrieb:
CMyFormView* pView = new CMyFormView(); //geht nicht, FormView protectet pView->pMyList2 = pMyList;wo sollte denn das stattfinden ?
In Deiner Formview gibt es eine Funtkion namens :
CForm::OnInitialUpdate()Diese füllst Du einfach mit ( wie Unix-Tom auch schon erwähnte ):
CDeinDocument *p_doc = (CDeinDocument*)GetDocument(); pMyList2 = p_doc->pMyList;Jetzt kannst Du auf alle Deine Klassen in Deiner Liste zugreifen.
Und alles sollte gut werden...
Grüße
BOA
-
Hey super! Gebau das hab ich gesucht!

Vielen Dank!