本人使用MFC制作进程内组件,从CCmdTarget类派生出自己的类,此类实现一个IMathEx接口从IDispatch接口继承,实现接口函数,注册后,客户端使用CoCreateInstance函数创建组件,使用IID_MathEx时创建失败,而使用IID_IDispatch却可以,在CMathEx类的源文件中有如下代码:
BEGIN_INTERFACE_MAP(CMathEx, CCmdTarget)
INTERFACE_PART(CMathEx, IID_IMathEx, Dispatch)
END_INTERFACE_MAP()
接口ID的信息已经存入接口表中,但是为什么使用IID_MathEx时创建还是失败呢?
BEGIN_INTERFACE_MAP(CMathEx, CCmdTarget)
INTERFACE_PART(CMathEx, IID_IMathEx, Dispatch)
END_INTERFACE_MAP()
接口ID的信息已经存入接口表中,但是为什么使用IID_MathEx时创建还是失败呢?
public IDispatchImpl< IMathEx, &IID_IMathEx,
&LIBID_MathExLib >,
public CComObjectRoot,
public CComCoClass< CBeeper, &CLSID_Beeper >
{
...
};
BEGIN_COM_MAP(CMathEx)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IMathEx)
END_COM_MAP( )