描述:
class ATL_NO_VTABLE CWebBrowserEventSink :
public CComObjectRootEx<CComSingleThreadModel>,
public IOleCommandTarget,
public IDispatch
{
}
声明是这样的。用到这个类的代码有:
CComObject<CWebBrowserEventSink> *m_pWebBrowserEventSink;
hr = CComObject<CWebBrowserEventSink>::CreateInstance(&m_pWebBrowserEventSink);
编译的时候说
d:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(2440) : error C2259: 'CComObject<class CWebBrowserEventSink>' : cannot instantiate abstract class due to following members:
d:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(2188) : while compiling class-template member function 'long __stdcall ATL::CComObject<class CWebBrowserEventSink>::CreateInstance(class ATL::CComObject<class CWebBrowserEve
ntSink> ** )'
d:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(2440) : warning C4259: 'long __stdcall IOleCommandTarget::QueryStatus(const struct _GUID *,unsigned long,struct _tagOLECMD [],struct _tagOLECMDTEXT *)' : pure virtual function was no
t defined
d:\program files\microsoft sdk\include\docobj.h(1402) : see declaration of 'QueryStatus'
d:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(2188) : while compiling class-template member function 'long __stdcall ATL::CComObject<class CWebBrowserEventSink>::CreateInstance(class ATL::CComObject<class CWebBrowserEve
ntSink> ** )'
d:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(2440) : error C2259: 'CComObject<class CWebBrowserEventSink>' : cannot instantiate abstract class due to following members:
d:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(2188) : while compiling class-template member function 'long __stdcall ATL::CComObject<class CWebBrowserEventSink>::CreateInstance(class ATL::CComObject<class CWebBrowserEve
ntSink> ** )'
d:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(2440) : warning C4259: 'long __stdcall IOleCommandTarget::QueryStatus(const struct _GUID *,unsigned long,struct _tagOLECMD [],struct _tagOLECMDTEXT *)' : pure virtual function was no
t defined
d:\program files\microsoft sdk\include\docobj.h(1402) : see declaration of 'QueryStatus'
d:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(2188) : while compiling class-template member function 'long __stdcall ATL::CComObject<class CWebBrowserEventSink>::CreateInstance(class ATL::CComObject<class CWebBrowserEve
ntSink> ** )'
Error executing cl.exe.
说不能实例化虚类。我用IOleCommandTarget是想自己处理页面中的脚本错误,但遇到了这样的情况怎么改呢?
您可能想查找下面的文章:
- 我加的IE按钮不响应已经加了IOleCommandTarget::Exec了啊
- IOleCommandTarget接口的querystatus和exec方法都没有进去执行
- 一个office开发不常遇到的问题:使用IOleCommandTarget::Exec
- 哪有现成的可以拦截的IOleCommandTarget函数第2个参数的类?
- 实现IOleCommandTarget接口,SetSite修改成员变量,Exec中获得成员变量,发现变量没被修改
- 求助:如何在自己的COM类中具体实现IOleCommandTarget?
- IOleCommandTarget::Exec问题(马上给分)
- 怎么实现IOleCommandTarget接口
- IOleCommandTarget::Exec一问