modifying a VTable in a COMInterfaceImp subclass

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

modifying a VTable in a COMInterfaceImp subclass

Eric Winger-4
Hi!

I've got a wee bit of trouble and could use some help.... I've come
across an error in the way a vtable was created automagically by Dolphin
using the ActiveX wizard. I created the table using the defineFunctions
rountines on the interface side (sc of COMInterface). This generates
some functions in the COMInterfaceImp sc functions class inst var.

However, one of the generated functions was created as (OPCITEMDEF *)
and I wanted it to be an array of OPCITEMDEFs. Would this be a
StructureArray class on the implementaiton side or perhaps a LPVOID?

How would I go about doing this?

(not sure if I"m providing enough detail, if not I can give you the gory
details)

thx

Eric

ps - I did try to modify the defineFunctions method and rerun, but it
only tries to add functions and crashes when it does an add: to the
functions Array.


Reply | Threaded
Open this post in threaded view
|

Re: modifying a VTable in a COMInterfaceImp subclass

Eric Winger-5
It seems that COMInterface class | compileFunctions does the trick
nicely. Should've looked a little more before I opened my mouth.

Eric

Eric Winger wrote:

> Hi!
>
> I've got a wee bit of trouble and could use some help.... I've come
> across an error in the way a vtable was created automagically by Dolphin
> using the ActiveX wizard. I created the table using the defineFunctions
> rountines on the interface side (sc of COMInterface). This generates
> some functions in the COMInterfaceImp sc functions class inst var.
>
> However, one of the generated functions was created as (OPCITEMDEF *)
> and I wanted it to be an array of OPCITEMDEFs. Would this be a
> StructureArray class on the implementaiton side or perhaps a LPVOID?
>
> How would I go about doing this?
>
> (not sure if I"m providing enough detail, if not I can give you the gory
> details)
>
> thx
>
> Eric
>
> ps - I did try to modify the defineFunctions method and rerun, but it
> only tries to add functions and crashes when it does an add: to the
> functions Array.
>


Reply | Threaded
Open this post in threaded view
|

Re: modifying a VTable in a COMInterfaceImp subclass

Blair McGlashan
Eric

"Eric Winger" <[hidden email]> wrote in message
news:[hidden email]...

> It seems that COMInterface class | compileFunctions does the trick
> nicely. Should've looked a little more before I opened my mouth.
>
> Eric
>
> Eric Winger wrote:
>
> > Hi!
> >
> > I've got a wee bit of trouble and could use some help.... I've come
> > across an error in the way a vtable was created automagically by Dolphin
> > using the ActiveX wizard. I created the table using the defineFunctions
> > rountines on the interface side (sc of COMInterface). This generates
> > some functions in the COMInterfaceImp sc functions class inst var.
> >
> > However, one of the generated functions was created as (OPCITEMDEF *)
> > and I wanted it to be an array of OPCITEMDEFs. Would this be a
> > StructureArray class on the implementaiton side or perhaps a LPVOID?
> >
> > How would I go about doing this?

What I tend to do in circumstances like this (apart from wondering whether
the type library analyzer could be doing a better job - usually it couldn't,
the type libraries sometimes don't contain enough information, either due to
loosely written IDL or limitations of the typelib object model) is to modify
the #defineFunctions method and the offending generated method. I then take
both out of the auto-generated category so that they are not overwritten
should I generate the interface again. I tend to do this, rather than
recompiling all the functions from the table, because the methods generated
by the analyzer contain more useful information than those generated from
the function table, such as the argument names from the original IDL and a
comment containing the helpstring and IDL fragment. Normally it is necessary
to modify the higher level wrapper method anyway (if any), since only the
typelib analyzer can generate those.

Regards

Blair