Re: about casting
"Tony Johansson" <t.johansson@logica.com> ha scritto nel messaggio
news:%23K1avrtVJHA.1220@TK2MSFTNGP04.phx.gbl...
I still have a major problem and that is when I do
handle_ds->
in method initRules2 see below no method is listed from the intellisense.
The methods that is located in the coclass Handle_DS are also public at
the moment.
STDMETHODIMP CSyntaxObj::InitRules2(IHandle_DS* handle_ds, BSTR Provider,
handle_ds is a pointer to COM interface IHandle_DS. This is unrelated to the
C++ class Handle_DS (that probably should be named like CHandleDS, because
as naming convention, especially useful for COM programming, the interfaces
should start with an 'I', and the C++ classes implementing those interfaces
should have names starting with 'C', e.g. IHandleDS and CHandleDS).
So, from the handle_ds pointer you should be able to access all the pure
virtual methods exposed by the IHandle_DS COM interface.
Did you put the definition of this IHandle_DS interface in the IDL file?
e.g. you should have something like this in the IDL:
interface IHandle_DS : IDispatch
{
[id(1), helpstring("method DoSomething")]
HRESULT DoSomething( ... parameters ... );
...
}
So you should be able to write C++ code like this to call DoSomething method
of IHandle_DS COM interface:
// IHandle_DS * handle_ds
HRESULT hr = handle_ds->DoSomething( .... );
BTW: Don't trust built-in Visual Studio IntelliSense. In some cases it does
not work well for C++. In my experience, if you really want good-working
IntelliSense for C++ (especially VC6), you should use Visual Assist X
add-in.
Just trust the compiler and the linker: do you have errors when you build
your COM component, and when you access the IHandle_DS methods?
Giovanni