VC++ 6.0中ActiveX控件“无法创建对象”
问题描述:
下面的方法多次执行单个对象创建,最终无法创建ActiveX控件对象。 HRESULT的值示出了HRESULT = -2,147,467,262VC++ 6.0中ActiveX控件“无法创建对象”
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
HRESULT hres = _Module.GetClassObject(rclsid, riid, ppv);
return hres;
}
正在执行只是一次另一个ActiveX控件和对象与成功创建同样的方法:HRESULT = 0;
任何有助于未能创建对象的可能原因。
答
具有持久状态的ActiveX控件(此控件的情况)必须实现IPersistStream或IPersistStreamInit。 增加一条线 “COM_INTERFACE_ENTRY(的IPersistStreamInit)”,下
“BEGIN_COM_MAP(MyControl)-------- END_COM_MAP()”
解决的问题。
请考虑上述方法中包含的“返回hres;”,错过发布。 – Navneet
错误代码是'E_NOINTERFACE',这意味着对应于'rclsid'的对象事实上不支持通过'riid'请求的接口。找出原因。 –
是的,提到的负HRESULT值转换为0x80004002/ E_NOINTERFACE错误代码,其描述为“不支持此类接口”。根据MSDN。但是在创建ActiveX控件的对象时可能会导致这种情况。 – Navneet