求助 vc项目开发实录 10 人力资源管理系统
发表在C语言图书答疑 2010-05-27
是否精华
版块置顶:
CADOOpration 类里的
BOOL CADOOperation::SetItemContent(CString field,  DWORD type, const void *variable)
case ADO_TYPE_BITMAP_FIEL:
{
CString* lpStr = (CString*)variable;
VARIANT bitData = {0};
CFile file(*lpStr, CFile::modeRead);
DWORD fileSize = file.GetLength() + 1;
char* bitBuffer = new char[fileSize];

file.ReadHuge(bitBuffer, fileSize);
file.Close();

bitData.vt = VT_ARRAY | VT_UI1;
SAFEARRAY* pSafeArray;
SAFEARRAYBOUND arrayBound[1];
arrayBound[0].cElements = fileSize - 1;
arrayBound[0].lLbound = 0;

pSafeArray = ::SafeArrayCreate(VT_UI1, 1, arrayBound);
for(long i = 0; i < fileSize-1; i++)
::SafeArrayPutElement(pSafeArray, &i, bitBuffer++);
bitData.parray = pSafeArray;

m_pRecordset->GetFields()->GetItem(_bstr_t(field))->AppendChunk(bitData);
}
看了好久不是太理解  高手能点同一下吗
分享到:
精彩评论 1
8031
学分:0 LV1
2010-05-28
沙发
首先有case,就应该有switch,switch对type变量进行判断,
如果type的值为ADO_TYPE_BITMAP_FIEL(该值可以在源代码中通过鼠标右键,查看定义,查找到具体值)
就进行如下操作
CString* lpStr 用来存储文件名,void *说明它是一个指针,通过强制类型转换转为cstring指针类型
file.ReadHuge(bitBuffer, fileSize);说明读取文件内容

SafeArrayCreate是在创建一个数组,SafeArrayCreate(VT_UI1, 1, arrayBound);说明数组的类型和大小(由arrayBound指定大小)
SafeArrayPutElement是为数据元素赋值

这里要说明的是,ADO使用的是VARIANT 类型的数据,VARIANT类似一个结构,也就是说,它的一个结构成员是用来指定类型的,
另一个成员是指定具体数据的。
bitData的类型是VT_ARRAY,说明是一个数组
bitData.parray,是赋值数组地址
如果bitData的类型是VT_i4,就应该给bitData.lvar赋值
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照