大家好,又见面了,我是你们的朋友全栈君。
- #include <Afxdisp.h>
- BOOL GetBinaryFromVariant(COleVariant & ovData, BYTE ** ppBuf, unsigned long * pcBufLen)
- {
- BOOL fRetVal = FALSE;
- //Binary data is stored in the variant as an array of unsigned char
- if(ovData.vt == (VT_ARRAY|VT_UI1)) // (OLE SAFEARRAY)
- {
- //Retrieve size of array
- *pcBufLen = ovData.parray->rgsabound[0].cElements;
- *ppBuf = new BYTE[*pcBufLen]; //Allocate a buffer to store the data
- if(*ppBuf != NULL)
- {
- void * pArrayData;
- //Obtain safe pointer to the array
- SafeArrayAccessData(ovData.parray,&pArrayData);
- //Copy the bitmap into our buffer
- memcpy(*ppBuf, pArrayData, *pcBufLen);
- //Unlock the variant data
- SafeArrayUnaccessData(ovData.parray);
- fRetVal = TRUE;
- }
- }
- return fRetVal;
- }
- BOOL PutBinaryIntoVariant(COleVariant * ovData, BYTE * pBuf, unsigned long cBufLen)
- {
- BOOL fRetVal = FALSE;
- VARIANT var;
- VariantInit(&var); //Initialize our variant
- //Set the type to an array of unsigned chars (OLE SAFEARRAY)
- var.vt = VT_ARRAY | VT_UI1;
- //Set up the bounds structure
- SAFEARRAYBOUND rgsabound[1];
- rgsabound[0].cElements = cBufLen;
- rgsabound[0].lLbound = 0;
- //Create an OLE SAFEARRAY
- var.parray = SafeArrayCreate(VT_UI1,1,rgsabound);
- if(var.parray != NULL)
- {
- void * pArrayData = NULL;
- //Get a safe pointer to the array
- SafeArrayAccessData(var.parray,&pArrayData);
- //Copy bitmap to it
- memcpy(pArrayData, pBuf, cBufLen);
- //Unlock the variant data
- SafeArrayUnaccessData(var.parray);
- *ovData = var; // Create a COleVariant based on our variant
- VariantClear(&var);
- fRetVal = TRUE;
- }
- return fRetVal;
- }
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161085.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...