> See, IFoo is an interface, and it's UUID is an interface UUID, which is
> known as an IID.  But _com_ptr_t::CreateInstance expects a CLSID,
> which is a
> COM Class UUID.  A COM class is what you see under the title of coclass in
> the IDL.  And if you have not done something weird, then the CLSID for the
> Foo class must be obtainable via __uuidof(Foo) or CLSID_Foo.

Yes, I found out eventually that it was Document I should have had here, not
IFoo (as in "IFoo.Document").

> Yes.  CoCreateInstance( ) looks for a class with UUID __uuidof(IFoo) which
> can't be found naturally, since __uuidof(IFoo) is an IID, not a CLSID.

The clsid part was no problem; CLSIDFromProg() gave me that. CCI /also/
needs an IID of the interface to retrieve, so that is where _uuidof(xxx)
came in - I just got confused about what should have got in it, since it
really isn't clear from the .tlh file (unless you know what you're looking
at).

> Something else: in your COM server, you may have either created a dual
> interface, or a pure IDispatch interface.  A dual interface is an
> interface

> A pure IDispatch interface is defined like this in the IDL:
>
>  [ ... ] dispinterface IFoo {};

It was a pure IDispatch interface.

--
Jason Teagle
[EMAIL PROTECTED]




Reply via email to