MFC编写的activex控件,用c#调用,我想在c#的控件事件中从activex传图片过来,该如何解决

ForMyUtopia 2014-10-29 02:26:35
我用的是传递byte数组的方式,在控件事件中是这么传的

VARIANT* vt;
int BufLen = mDHCamera.MaxWid() * mDHCamera.MaxHei() * 3;
SAFEARRAY * psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = BufLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
BYTE *buf;
::SafeArrayAccessData(psa, (void **)&buf);
memcpy(buf,pImageBuffer,BufLen);
::SafeArrayUnaccessData(psa);
vt->vt = VT_ARRAY|VT_UI1;
vt->parray = psa;

grabSuccess(vt,BufLen,mDHCamera.MaxWid(),mDHCamera.MaxHei());

grabSuccess事件用于在c#容器中接收byte数组。但是在c#中接收时会出现内存受保护,或指向的内存不存在的问题,求大侠如何解决跨语言之间的数组传递问题,最好有个例子
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yofoo 2014-10-29
  • 打赏
  • 举报
回复
在C#调试看看 传递进来的是否是 vt->vt == VT_ARRAY|VT_UI1 有个效率不高的方法, 把内存数据用base64, 然后直接传字符串, 那边再解码
ForMyUtopia 2014-10-29
  • 打赏
  • 举报
回复
就是如何把一个BYTE数组或指针 通过activex控件传给c#窗体容器,求各位大侠解答

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧