控件有个方法:BOOL GetName(BSTR*pstrName);
那么在网页中该如何调用呢?(用JavaScript)
我这样写:
var strName;
objocx.GetName(strName); // 确定对象已经创建,而且这个方法的执行是成功的。却得不到值啊我不能改变这个控件的接口方法,
有没有办法得到输出参数传出来的值吗?
谢谢.
那么在网页中该如何调用呢?(用JavaScript)
我这样写:
var strName;
objocx.GetName(strName); // 确定对象已经创建,而且这个方法的执行是成功的。却得不到值啊我不能改变这个控件的接口方法,
有没有办法得到输出参数传出来的值吗?
谢谢.
你这个方法声明的不正确,你是不是想返回一个字符串啊,需要这样声明GetName([out,retval]BSTR*pStrName);
IDL文件中这样声明
[id(1), helpstring("method GetString")] HRESULT GetString([out,retval]BSTR* pstr);
头文件中:
STDMETHOD(GetString)(/*[out,retval]*/BSTR* pstr);
CPP中STDMETHODIMP CCJSString::GetString(BSTR *pstr)
{
USES_CONVERSION;
SysReAllocString(pstr, T2OLE("xxxx")); return S_OK;
}JS中直接调用就可以了,不需要填写参数 var xx= xxx.GetString();
你们两个的解决方案是一样的,都是利用ATL来实现控件。但如果用MFC实现一个控件的话,如果必须实现一个VARIANT_BOOL GetName(BSTR* pstrName);这样的接口,JavaScript/VBScript该怎么调用呢?感谢大家的关注。
3X
HRESULT GetName([out, retval] BSTR* pstrName);
Dim strName
objocx.GetName(strName) 您是怎么调用呢?
HRESULT GetName([out, retval] VARIANT* pstrName);
实践证明:将接口声明成:HRESULT GetName([out,retval]BSTR *pbstrName);
用VBScript和JavaScript都是可以调用成功的。也许理论上,需要声明成:HRESULT GetName([out, retval] VARIANT* pstrName);
希望得到进一步指点。谢谢。
实践证明:将接口声明成:BSTR GetName();是可以的;
而声明成VARIANT_BOOL GetNameII(BSTR* pstrName);却得不到值!在网页中,如下调用:
// VBScript
Dim strName
objocx.GetName(strName) // JavaScript
var strNameII;
objocx.GetNameII( strNameII );如果必须调用这样的接口(VARIANT_BOOL GetNameII(BSTR* pstrName); )
怎么调用呢?谢谢。