📄 variantbufconvert.cpp
字号:
// VariantBufConvert.cpp: implementation of the CVariantBufConvert class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
//#include "VariantResearch.h"
#include "VariantBufConvert.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CVariantBufConvert::CVariantBufConvert()
{
}
CVariantBufConvert::~CVariantBufConvert()
{
}
BOOL CVariantBufConvert::BufToVariant(VARIANT &var, void *Buf, int BufSize)
{
if(BufSize<=0)
return FALSE;
SAFEARRAY * psa=NULL;
SAFEARRAYBOUND pBound;
pBound.lLbound=0; //该维数组的第一个Index
pBound.cElements=BufSize; //数组个数
psa=SafeArrayCreate(VT_UI1,1,&pBound);
memcpy(psa->pvData,Buf,BufSize);
var.vt=VT_ARRAY|VT_UI1 ;
var.parray =psa;
return TRUE;
}
BOOL CVariantBufConvert::VariantToBuf(VARIANT &var, void *Buf, long InputSize,long& ReturnBufSize)
{
if(Buf==NULL) //无Buf
return FALSE;
if(InputSize<=0)
return FALSE;
if(var.vt !=(VT_ARRAY|VT_UI1))//类型不对
return FALSE;
SAFEARRAY * psa=var.parray;
SafeArrayGetUBound(psa,1,&ReturnBufSize);
ReturnBufSize++;
if(InputSize>=ReturnBufSize)
memcpy(Buf,psa->pvData, ReturnBufSize);
else
{
memcpy(Buf,psa->pvData, InputSize);
ReturnBufSize=InputSize;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -