例如:
---------------------------------------------
//Cxxx类中设置myArray接受属性输入
private:
vector<CString> myArray;
//属性get函数该怎么写?
STDMETHODIMP Cxxx::get_ArrayPro(VARIANT *pVal)
{
return S_OK;
}
//属性put函数该怎么写?
STDMETHODIMP Cxxx::putref_ArrayPro(VARIANT newVal)
{
return S_OK;
}
---------------------------------------------
//Cxxx类中设置myArray接受属性输入
private:
vector<CString> myArray;
//属性get函数该怎么写?
STDMETHODIMP Cxxx::get_ArrayPro(VARIANT *pVal)
{
return S_OK;
}
//属性put函数该怎么写?
STDMETHODIMP Cxxx::putref_ArrayPro(VARIANT newVal)
{
return S_OK;
}
解决方案 »
- VS 2010 mfc dialog 控件问题
- 新手求助!MFC CString对象赋值问题
- 请问有没有《Visualc++高级界面特效制作百例》这本书的教程?
- 在一个局域网内用SOCKET通信,如何通过IP获得计算机名称?
- 请人写个软件 有意着请进-需用压缩控件与程序自动点广告
- 菜鸟100分求救!打印问题,视图中文字大小与打印预览中文字大小不同!(是否打印预览与实际打印结果相同?)
- 记录集的问题
- 全部分给出,求救,dll调用中this指针传送问题!!!
- 请教:CxImage做的TIF文件(用jpe压缩)不能在系统自带的图象处理里打开
- 如何用VC实现接收广播数据包???
- recordset.movefirst不能用?
- MSDN宇宙版,5DVD不知道怎样安装!
vector<CString> myArray; // 楼主这里混合了 MFC,SLT和 ATL, 呵呵,建议不要这样
//属性get函数该怎么写?
STDMETHODIMP Cxxx::get_ArrayPro(VARIANT *pVal)
{
pVal->vt = VT_ARRAY|VT_BSTR;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = myArray.size();
chunk->parray = SafeArrayCreate(VT_BSTR, 1, rgsabound);
BSTR* pBuf = 0;
SafeArrayAccessData(chunk->parray, (void**)&pBuf);
for(int i = 0; i < myArray.size(); ++i)
pBuf[i] = myArray[i].SysAllocString();
SafeArrayUnaccessData(chunk->parray);
return S_OK;
}
//属性put函数该怎么写?
STDMETHODIMP Cxxx::putref_ArrayPro(VARIANT newVal)
{
if(newVal.vt != (VT_ARRAY|VT_BSTR)) E_INVALIDARG; // 无效的参数类型
BSTR* pData = 0;
SafeArrayAccessData(newVal.parray, (void**)&pData);
myArray.clear();
int iSize = SafeArrayGetElemsize(newVal.parray)
USES_CONVERSION;
for(int i = 0; i < iSize; ++i)
myArray.push_back(CString(OLE2CA(pData[i])))
SafeArrayUnaccessData(newVal.parray);
return S_OK;
}
随手写的, 不知道写得对不对. 大致原理也就是这样了, 楼主自己调试下
vector<MyStruct> myArray; //MyStruct是一个包含CString申明字串的结构体我对ATL设计没有经验,我发现自己很容易就走入了ATL+STL+MFC的组合,我本身是很不情愿用MFC不知道这三者的混合有什么不好,或者我应该采取其他更好的做法?(事实上当前我只用到了MFC的CString,但是工程引入了一个依赖MFC的Lib,所以我以为加上MFC会方便些)
这个用法本身 应该没什么问题. 你再检查调试一下