BYTE 和 COleVariant 相互轉換

來源:互聯網
上載者:User
#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;}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.