您的位置:首页 > 编程语言 > VB

vc做的ocx控件与vb等之间的自定义结构体数据传递

2009-07-19 03:52 423 查看
要使用safearray。

ocx中包装数据:

struct vv {
int m;
int n;
};

VARIANT varArray;

long i;
vv kk[10];
for(i=0;i<10;i++){
kk[i].m=i;
kk[i].n=i*i;
}

int len=sizeof(vv);
SAFEARRAYBOUND bound;
bound.cElements=10;
bound.lLbound=0;
SAFEARRAY* psa=SafeArrayCreate(VT_VARIANT,1,&bound);

psa->fFeatures =FADF_AUTO|FADF_FIXEDSIZE;
psa->cbElements =sizeof(vv);
psa->pvData =&kk;

varArray.vt = VT_ARRAY|VT_UI1;
varArray.parray = psa;

testevent(&varArray);

其中testevent是事件,参数类型是variant*。

vb中:

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type tt
m As Long
n As Long
End Type

Private Sub testocx11_mm(buff1 As Variant)
Dim r() As Byte
r = buff1 '把数据放到一个byte数组中
Dim myprice() As tt
ReDim myprice(10)
CopyMemory myprice(1), r(0), Len(myprice(0)) * 10
End Sub

这样myprice中就是vc传过来的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐