HRESULT Get_CH_Table_A([in]VARIANT* en_name,[out,retval]SAFEARRAY(VARIANT)* pch_name),如何实现入参为字符串数组,出参也为字符串数组,不知道这样定义对不对?
客户调用的写法(用SAFEARRAY)以及STDMETHODIMP CCE_Map::Get_CH_Table_A(VARIANT *en_name,SAFEARRAY **pch_name){}怎么定义呢?
实在搞不懂数组传递,不知道该怎么写了,大家帮帮忙
客户调用的写法(用SAFEARRAY)以及STDMETHODIMP CCE_Map::Get_CH_Table_A(VARIANT *en_name,SAFEARRAY **pch_name){}怎么定义呢?
实在搞不懂数组传递,不知道该怎么写了,大家帮帮忙
解决方案 »
- VC 打开 Excel 文件后,excel.exe进程无法退出,m_app.Quit()也不起作用,除非程序退出,送分啊!!!
- 学图象处理,都应该会哪些课程?
- 请高手算法
- listcontrl中的图标怎么处理OnMouseOver和OnMouseLeave消息?
- 请问在VC6如何把某个MFC函数显示它的MFC层次结构出来?
- 小问题:如何在VC中嵌入对Access表tableApp中纪录个数的统计(在线等)?
- com技术为何
- 在VC6中的FILEVIEW中怎么设置重名的目录?
- ie的插件怎么做
- 我想了解一下.h,.dll,.lib的内在联系,编译时分别的作用
- 各位大哥请问VC要学些什么啊?
- 急问:regsvr32 时警告“LoadLibrary失败-找不到指定的模块”是何缘故??
SAFEARRAY* psa;
SAFEARRAYBOUND sad[1];
sad[0].cElements = 2;
sad[0].lLbound = 0;
psa = ::SafeArrayCreate(VT_BSTR,1,sad);???
VARIANT var;
var.vt = VT_ARRAY|VT_BSTR;
var.parray = psa;hr = pCE_Map->Get_CH_Table_A(&var);
//*****************************************
我想把pData赋值,然后塞进psa里怎么做阿?
SAFEARRAY* psa = ::SafeArrayCreate(VT_BSTR,1,sad);BSTR* pData = NULL;
SafeArrayAccessData(psa, (LPVOID *)&pData);
for(int i = 0 ; i < 2 ; i ++) {
OLECHAR * sz = L"aa";
pData[i] = ::SysAllocString(sz);
// 或 CString str = "aa";
// pData[i] = str.AllocSysString();
}
SafeArrayUnaccessData(psa);VARIANT var;
var.vt = VT_ARRAY|VT_BSTR;
var.parray = psa;
hr = pCE_Map->Get_CH_Table_A(&var);
{
psa = pvar_Tabel->parray;//报错
//如果改为psa = *pvar_Tabel->pparray客户调用不出错 hr = SafeArrayAccessData(psa,(LPVOID *)&pData);
OLECHAR * sz1 = L"asd";
OLECHAR * sz2 = L"qwe";
pData[0] = ::SysAllocString(sz1);
pData[1] = ::SysAllocString(sz2); }
catch(...)
{
ErrMessage = L"failed SafeArrayGetElement";
}