描述:
我遇到的问题是:
在一个名为MyComTest的ActiveX控件中,有一属性(PropGet)MyParent,该属性返回值是一实现IElement(从IDispatch继承)的组件
我希望能在网页中通过脚本对MyParent访问,也就是:
var parentElement = MyComTest1.MyParent;
alert(parentElement.Name);
由于不想在注册表中留下过多的记录,且IElement必须依存IMyComTest存立,因此不希望通过CoCreateInstanse实现。
我用ATL试过以下几种方法:
1、public CElement : ....,IDispachImpl(......){...}
...
HRESULT CMyComTest::get_MyParent(LPIDISPATCH val)
{
// CComObject(CElement)* m_myParent 是CMyComTest的成员变量
CComObject(CElement).CreateInstanse(&m_myParent);
*val = &m_myParent;
}
使用该方法用alert(parentElement);测试时显示undefine,但在debug方式下,可以看到*val为有效值。
2、public CElement : IDispatch{自己实现IDispatch,IUnknown成员函数}
...
HRESULT CMyComTest::get_MyParent(LPIDISPATCH val)
{
// CElement* m_myParent 是CMyComTest的成员变量
m_myParent = new CElement;
*val = &m_myParent;
}
使用该方法用alert(parentElement);测试时出现非法访问错误,但在debug方式下,可以看到*val为有效值。
不知各位大侠能否赐教?
您可能想查找下面的文章:
- CoCreateInstance和CoCreateInstanceEx的区别??
- 抓狂!看了几天了,CoCreateInstance总是出错!!!!救命啊!
- 请教CoCreateInstanceEx产生E_ACCESSDENIED的原因
- CoCreateInstance的内部实现问题??
- 在DEV-CPP中编译建立快捷方式代码出现incompatibletypeforargument1of`CoCreateInstance'
- 用dll的COM除了cocreateinstance能不能就当普通DLL用loadlibrary调用。
- CoCreateInstanceEx问题
- CoCreateInstance调用成功,CoGetClassObject调用失败,为什么?
- CoCreateInstance调用出错,帮看看!
- CoCreateInstance的问题