Re: Enumerating COM objects on the client side
That of course wouldn't work, since the enumerator only
implements IEnumVARIANT. You need to enumerate using
the IEnumVARIANT::Next and apply the nested loop on each
element retrieved (using the same two-step approach).
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://vcfaq.mvps.org
=====================================
"Brian Muth" <bmuth@mvps.org> wrote in message
news:%238caTK3sHHA.3468@TK2MSFTNGP05.phx.gbl...
<fueagk@leeds.ac.uk> wrote in message
news:1182366355.216454.225270@o61g2000hsh.googlegroups.com...
Hi, does anyone know a suitable method for accessing a list of COM
objects. I have sample code for VB that uses the foreach command:
//On an event which updates various lists (Client side)
foreach (XTAPI.ITTPriceUpdate priceUpdate in pNotify.PriceList)
{
foreach (XTAPI.ITTPriceEntry priceEntry in priceUpdate)
{
do some stuff....
}
}
Here priceEntry is a list of objects within priceUpdate which is a
list of objects within pricelist. Unfortunately I need to achieve the
same thing in VC++ 6.
I access these objects through smart pointers and with these pointers
there are various methods I can use.
E.g.
XTAPI::ITTPriceUpdatePtr priceUpdate;
priceUpdate ->Get_NewEnum();
//returns an IUnknownPtr.
This doesn't look quite right. You should be calling Get_NewEnum on the
pNotify.PriceList interface. So it might look like this:
XTAPI::IPricListPtr pricelist;
XTAPI::ITTPriceUpdatePtr priceUpdate;
priceUpdate = pricelist->Get_NewEnum();
Note the implied QueryInterface call that is performed.
At the moment I can't even access any of the priceUpdate objects. I
think i have to use some sort of enumeration but I'm not sure if the
distributors have got a good facility for this within their dll.
If they are supporting this for VB clients, you can do it with a VC++
client.
Brian