variant

  /* ActiveX中的代码 */  
  long   CFuYouCtrl::SetData(const   VARIANT   FAR&   vData)    
  {  
          //   TODO:   Add   your   dispatch   handler   code   here  
          void*   pDest;  
          SafeArrayAccessData(vData.parray,   &pDest);  
          memcpy(m_Fuyou,   pDest,   vData.parray->rgsabound[0].cElements);  
          SafeArrayUnaccessData(vData.parray);  
          Invalidate();  
          return   0;  
  }  
   
  long   CFuYouCtrl::GetData(VARIANT   FAR*   pvData)    
  {  
          //   TODO:   Add   your   dispatch   handler   code   here  
          pvData->vt   =   VT_UI1   |   VT_ARRAY;  
          SAFEARRAYBOUND   bound;  
          bound.cElements   =   strlen(m_Fuyou);  
          bound.lLbound   =   0;  
          pvData->parray   =   SafeArrayCreate(VT_UI1,   1,   &bound);   //   Create   it  
          void*   pDest;  
          SafeArrayAccessData(pvData->parray,   &pDest);  
          memcpy(pDest,   m_Fuyou,   strlen(m_Fuyou));   //   Copy   into   array  
          SafeArrayUnaccessData(pvData->parray);  
          return   0;  
  }  
  /*   VC   调用的代码 */  
  void   CFuyouTestDlg::OnButton1()    
  {  
          //   TODO:   Add   your   control   notification   handler   code   here  
          char   fBuf[]="hello";  
   
          VARIANT   varTemp;  
          varTemp.vt   =   VT_UI1   |   VT_ARRAY;  
          SAFEARRAYBOUND   bound;  
          bound.cElements   =   strlen(fBuf);  
          bound.lLbound   =   0;  
          varTemp.parray   =   SafeArrayCreate(VT_UI1,   1,   &bound);   //   Create   it  
          void*   pDest;  
          SafeArrayAccessData(varTemp.parray,   &pDest);  
          memcpy(pDest,   fBuf,   strlen(fBuf));   //   Copy   into   array  
          SafeArrayUnaccessData(varTemp.parray);  
          m_Fuyou.SetData(varTemp);  
          SafeArrayDestroy(varTemp.parray);    
  }  
   
  void   CFuyouTestDlg::OnButton2()    
  {  
          //   TODO:   Add   your   control   notification   handler   code   here  
          char   fBuf[256];  
          VARIANT   varTemp;  
          m_Fuyou.GetData(&varTemp);  
   
          memcpy(fBuf,varTemp.parray->pvData,varTemp.parray->rgsabound[0].cElements);  
          fBuf[varTemp.parray->rgsabound[0].cElements]='/0';  
          MessageBox(fBuf);  
          SafeArrayDestroy(varTemp.parray);    
   
   
  }  
  /*   BCB   调用的代码*/  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
          char   fBuf[]="hello";  
   
          VARIANT   varTemp;  
          varTemp.vt   =   VT_UI1   |   VT_ARRAY;  
          SAFEARRAYBOUND   bound;  
          bound.cElements   =   strlen(fBuf);  
          bound.lLbound   =   0;  
          varTemp.parray   =   SafeArrayCreate(VT_UI1,   1,   &bound);   //   Create   it  
          void*   pDest;  
          SafeArrayAccessData(varTemp.parray,   &pDest);  
          memcpy(pDest,   fBuf,   strlen(fBuf));   //   Copy   into   array  
          SafeArrayUnaccessData(varTemp.parray);  
          FuYou1->SetData(varTemp);  
          SafeArrayDestroy(varTemp.parray);    
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::Button2Click(TObject   *Sender)  
  {  
          char   fBuf[256];  
          VARIANT   varTemp;  
          FuYou1->GetData(&varTemp);  
          memcpy(fBuf,varTemp.parray->pvData,varTemp.parray->rgsabound[0].cElements);  
          fBuf[varTemp.parray->rgsabound[0].cElements]='/0';  
          Edit1->Text   =   fBuf;  
          SafeArrayDestroy(varTemp.parray);  
   
  }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值