BYTE 和 COleVariant 相互转换

BYTE 和 COleVariant 相互转换#include     BOOL GetBinaryFromVariant(COleVariant & ovData, BYTE ** ppBuf, unsigned long * pcBufLen)  {    BOOL fRetVal = FALSE;      //Binary data is stored in the variant as an array of

大家好,又见面了,我是你们的朋友全栈君。

  1. #include <Afxdisp.h>  
  2.   
  3. BOOL GetBinaryFromVariant(COleVariant & ovData, BYTE ** ppBuf, unsigned long * pcBufLen)  
  4. {  
  5.   BOOL fRetVal = FALSE;  
  6.   
  7.   //Binary data is stored in the variant as an array of unsigned char  
  8.   if(ovData.vt == (VT_ARRAY|VT_UI1))  // (OLE SAFEARRAY)  
  9.   {  
  10.     //Retrieve size of array  
  11.     *pcBufLen = ovData.parray->rgsabound[0].cElements;  
  12.   
  13.     *ppBuf = new BYTE[*pcBufLen]; //Allocate a buffer to store the data  
  14.     if(*ppBuf != NULL)  
  15.     {  
  16.       void * pArrayData;  
  17.   
  18.       //Obtain safe pointer to the array  
  19.       SafeArrayAccessData(ovData.parray,&pArrayData);  
  20.   
  21.       //Copy the bitmap into our buffer  
  22.       memcpy(*ppBuf, pArrayData, *pcBufLen);  
  23.   
  24.       //Unlock the variant data  
  25.       SafeArrayUnaccessData(ovData.parray);  
  26.       fRetVal = TRUE;  
  27.     }  
  28.   }  
  29.   return fRetVal;  
  30. }  
  31.   
  32. BOOL PutBinaryIntoVariant(COleVariant * ovData, BYTE * pBuf, unsigned long cBufLen)  
  33. {  
  34.   BOOL fRetVal = FALSE;  
  35.   VARIANT var;  
  36.   VariantInit(&var);  //Initialize our variant  
  37.   
  38.   //Set the type to an array of unsigned chars (OLE SAFEARRAY)  
  39.   var.vt = VT_ARRAY | VT_UI1;  
  40.   
  41.   //Set up the bounds structure  
  42.   SAFEARRAYBOUND  rgsabound[1];  
  43.   rgsabound[0].cElements = cBufLen;  
  44.   rgsabound[0].lLbound = 0;  
  45.   
  46.   //Create an OLE SAFEARRAY  
  47.   var.parray = SafeArrayCreate(VT_UI1,1,rgsabound);  
  48.   if(var.parray != NULL)  
  49.   {  
  50.     void * pArrayData = NULL;  
  51.   
  52.     //Get a safe pointer to the array  
  53.     SafeArrayAccessData(var.parray,&pArrayData);  
  54.   
  55.     //Copy bitmap to it  
  56.     memcpy(pArrayData, pBuf, cBufLen);  
  57.   
  58.     //Unlock the variant data  
  59.     SafeArrayUnaccessData(var.parray);  
  60.   
  61.     *ovData = var;  // Create a COleVariant based on our variant  
  62.     VariantClear(&var);  
  63.   
  64.     fRetVal = TRUE;  
  65.   }  
  66.   return fRetVal;  
  67. }  
转自:http://blog.csdn.net/zgl7903/article/details/2536463
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161085.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RabbitMQ流控-FLow Control

    RabbitMQ流控-FLow Control当Connection发布消息的速度太快,队列无法跟上(消费速度低于生产速度),RabbitMQ会降低Connection的速度,无需配置。流控的Connection可以在rabbitmqctl、管理UI和HTTPAPI响应中显示flow状态。这意味着连接每秒要经历多次阻塞和解除阻塞,以便将消息传入的速度保持在服务器其他部分(例如,将这些消息路由到的队列)能够处理的速度。一般来说,处于流…

    2022年5月27日
    86
  • 华为论坛官网_华为设备官网

    华为论坛官网_华为设备官网今日看点✦华为将持续投入汽车行业,今年研发投资将达10亿美元✦绿地集团旗下绿地数科拟2023年前上市,利润达到60亿元✦瑞幸首家咖啡烘焙基地正式投产,总投资2.1亿元✦海南离岛免税…

    2022年10月5日
    0
  • LAN8720A网络模块的使用问题

    LAN8720A网络模块的使用问题一、LAN8720A模块驱动电路最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程一直驱动不起来,在windows系统下一直都ping不通,后面对比正点原子的LAN8720A与网上买回来的微雪LAN8720A模块的电路有差异。下图为网上买回来微雪的LAN8720A驱动电路:下…

    2022年6月15日
    367
  • Cutout Standard扣图软件「建议收藏」

    Cutout Standard扣图软件「建议收藏」CutoutStandard是款功能强大且专业的抠图工具。内置强大的功能,可以从相片背景中将您需要的对象抠出和制作蒙太奇图片,且提供Photoshop的抠图插件,非常方便实用。感兴趣的朋友快来下载使用吧。软件功能  【更改背景】CutoutStandard最新版允许您将新剪切的对象与您选择的另一个图像组合在一起。例如,您可以将剪切对象放在“其他位置”。  【模糊背景】选择此功能时,程序切换到模糊模式。您可以将图像的背景模糊到不同程度。此外,背景将被保留,并且唯一的组件会受到模糊效果的影响。这

    2022年9月24日
    0
  • JS实现常见数据结构:哈希表[通俗易懂]

    哈希表特点:存储键值对的数据结构,哈希表内部是使用一个hash函数把传入的键转换成一串数字,而这串数字将作为键值对实际的key,通过这个key查询对应的value非常快。哈希表方法:1.add:添加一组键值对。2.remove:删除一组键值对。3.lookup:查找一个键对应的值。

    2022年4月13日
    88
  • 中文字体的种类_漂亮的中文字体

    中文字体的种类_漂亮的中文字体简单来分的话,大致可分为三类:1.古代字体:宋体,楷体等2.现代字体:各种黑体3.形变字体:各种美术字。按照衬线体来分的话:衬线体:宋体非衬线体:楷体,黑体。详情:宋体:宋体是一种衬

    2022年8月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号