在先等高手进.
现在用VC写了个COM接口
com接口中有个类叫ProductClass,类中俩有个方法
GetClassValue()
SetClassValue()
在VC工程中import这个COM接口.并在VC中定义了个Clist:
typedef CList <IProductClass*, IProductClass*> CProductClassArray;
按理说这个Clist应该这样定义
typedef CList <IProductClassPtr, IProductClassPtr> CProductClassArray;
但这样定义的话会报错。
在VC中写了个方法并可以调试通过
bool Database::ReadProductClass(CString sUser,CProductClassArray& arrProductclass)
{
m_sSQL.Format( "select * from test " );
try
{
_variant_t var;
m_pRecordset = m_pConnection-> Execute((LPCTSTR)m_sSQL, &var, adCmdText);
IProductClassPtr pProductClass;
HRESULT ProductClassPthr = pProductClass.CreateInstance(__uuidof(ProductClass));
if (ProductClassPthr!=0)
{
AfxMessageBox( "XTDSLDATE.dll控件加载失败 ");
return false;
}
while (m_pRecordset-> IsEOF == VARIANT_FALSE)
{
var = m_pRecordset-> GetCollect(L "ClassValue ");
pProductClass-> PutClassValue(_bstr_t(var));
arrProductclass.AddTail( pProductClass );
m_pRecordset-> MoveNext();
}
}
SL_CATCH(_T( "读取产品大类信息失败 "))
IProductClass* pProductClass1;
POSITION pos = arrProductclass.GetHeadPosition();
pProductClass1 = arrProductclass.GetAt(pos);
//调试到以上都没有报错。但下面开始报错。
AfxMessageBox(pProductClass1-> GetClassValue());
return true;
}
我想问问
1定义COM接口的指针。IProductClass*与IProductClassPtr有什么区别
2上面代码应该如何修改。请各位高手帮帮忙。
[解决办法]
帮顶