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.


Log in to reply