是否可以自定接口使用的参数类型??急 自己编写了一个组件,该组件中有一个属性是一ADO.Resultset对象,我将该对象转换为IDispatch后返回给vbs使用,但是vbs却无法操作该对象,请问要如何返回Resultset对象vbs才能正确访问?急!!!!!!!!!!!!!!!!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的接口其中一部分是这样定义的:interface IOfficeShell : IDispatch{[propget, id(1), helpstring("外壳对象实体")] HRESULT Body([out, retval] IDispatch* *pVal);[propput, id(1), helpstring("外壳对象实体")] HRESULT Body([in] IDispatch* newVal);};函数实现STDMETHODIMP COfficeShell::get_Body(IDispatch **pVal){ // TODO: Add your implementation code here IDispatch *pDisp; m_pResultset->QueryInterface(__uuidof(IDispatch), (LPVOID*)&pDisp); *pVal = pDisp; return S_OK;}但是返回后vbs并不认识这个IDispatch是Resultset,但是在接口中又无法申明Body的返回参数是Resultset对象。请问如何能实现返回能够让vbs知道的Resultset对象。 STDMETHODIMP CDataAccessor::GetRecordSet(IUnknown** NativeRecordSet){ if (NativeRecordSet == NULL) return E_INVALIDARG; // Note that ADO provides the ADORecordsetConstructionPtr: ADORecordsetConstructionPtr spConsPtr; spConsPtr = m_spADORecordset; spConsPtr->get_Rowset(NativeRecordSet); return S_OK;} 我是想问需要在idl中如何定义才能够被IE中的vbs识别为Resultset对象 我是想问需要在idl中如何定义才能够被IE中的vbs识别为Resultset对象 STDMETHODIMP CDataAccessor::GetRecordSet(VARIANT *pRes){ HRESULT hr = E_FAIL; // if(VT_NULL == pRes) return E_INVALIDARG; _RecordsetPtr obj; hr = obj.CreateInstance(__uuidof(Recordset); if(SUCCEEDED(hr)) { //其他操作... pRes->vt = VT_DISPATCH; obj->QueryInterface(IID_IDispatch, (void **)&pRes->pdispVal); hr = S_OK; } return hr;}VB script 调用:Dim resset res = xxx.GetRecordSet()res即为Resultset对象 谢谢 AccessCSDN(筛沙子的民工) 分全给你。 主线程、OnPaint() 怎么播放声音文件.wav 控件用到IE里,当IE关闭时,资源释放问题 CStdioFile文件的读写问题,请大家帮我看看! 线程问题,一些概念始终没明白! 一个VC初学者的困惑?! 关于“cl"指令与makefile!! 什么是消息映射 关于SendMessage()函数里WM_COPYDATA的使用 是不是我的VC有问题? 怎样在程序中动态的设置Button 的Default button属性??? 用VC++6编的最小exe文件是多少k呀?应怎样做才能最小?
{
[propget, id(1), helpstring("外壳对象实体")] HRESULT Body([out, retval] IDispatch* *pVal);
[propput, id(1), helpstring("外壳对象实体")] HRESULT Body([in] IDispatch* newVal);
};函数实现
STDMETHODIMP COfficeShell::get_Body(IDispatch **pVal)
{
// TODO: Add your implementation code here
IDispatch *pDisp; m_pResultset->QueryInterface(__uuidof(IDispatch), (LPVOID*)&pDisp);
*pVal = pDisp;
return S_OK;
}但是返回后vbs并不认识这个IDispatch是Resultset,但是在接口中又无法申明Body的返回参数是Resultset对象。请问如何能实现返回能够让vbs知道的Resultset对象。
{
if (NativeRecordSet == NULL)
return E_INVALIDARG; // Note that ADO provides the ADORecordsetConstructionPtr:
ADORecordsetConstructionPtr spConsPtr;
spConsPtr = m_spADORecordset; spConsPtr->get_Rowset(NativeRecordSet); return S_OK;
}
{
HRESULT hr = E_FAIL;
//
if(VT_NULL == pRes) return E_INVALIDARG;
_RecordsetPtr obj;
hr = obj.CreateInstance(__uuidof(Recordset);
if(SUCCEEDED(hr))
{
//其他操作...
pRes->vt = VT_DISPATCH;
obj->QueryInterface(IID_IDispatch, (void **)&pRes->pdispVal);
hr = S_OK;
}
return hr;
}VB script 调用:
Dim res
set res = xxx.GetRecordSet()
res即为Resultset对象