Member eines COM-Objekts benutzen
-
Hallo!
Ich habe folgendes Problem:
Ein Com-Objekt liefert mir ein Interface zu einem Basisobjekt. Dieses Basisobjekt beinhaltet untergeordnete Objekte bzw. Pointer darauf, die wohl zum einem Array oder einer Enumeration verzweigen.
In folgendem Code-Abschnitt habe ich mal meine Versuche dokumentiert.
Die Kommentare zeigen das jeweilige Ergebnis der Versuche:hr = CoCreateInstance( IID, // CLSID of coclass NULL, // not used - aggregation CLSCTX_INPROC_SERVER, // type of server IID2, // IID of interface (void**) &pObjekt ); // Pointer to our interface pointer if ( SUCCEEDED ( hr ) ) { IProjekte * pIProjekte; pObjekt->hole_Projekte(&pIProjekte); // Liefert die korrekte Anzahl int count = pIProjekte->Count; // Liefert einen Pointer, aber vom falschen Typ IUnknownPtr xy = pIProjekte->Get_NewEnum(); // Typecast of korrekten Objekttyp liefert Zeiger auf 0 IProjektePtr ptrs2; ptrs = (IProjektePtr)xy; // Liefert auch einen Pointer auf 0 IProjektePtr xy2 = pIProjekte->Get_NewEnum(); ... pObjekt->Release(); }
Wenn ich das selbe unter C# mache, kann ich ganz einfach durch die Objekte gehen bis zur untersten Ebene der jeweiligen Member-Objekte. Aber irgendwie klappt das unter C++ nicht so, wie ich mir das vorstelle.
Kann mir hier jemand helfen?
Danke schon mal & Gruß
J.