I have an ActiveX ctrl written in MFC with an IDispatch interface (yeah they all have IDispatch) but it doesn't have a dual interface.

Microsoft technical note 65 describes how to add a dual interface (supports object access through a vtable, early-binding and through IDispatch, late-binding)

I would prefer not to implement a dual interface (it's a major piece of work)

Furthermore, a dll uses my activeX ctrl, thus after CoCreateInstance(..) the interface-pointer looks good, but when the first method is called I get a major COM error (because QI gave me an IDispatch interface-pointer which supports late-binding, not early binding).

How do I access the methods in the dll? Is there an easy solution? or am I gonna have to take a dive into the COM swamp (and possibly learn some new tricks)?