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传过来的数据。
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传过来的数据。
相关文章推荐
- VC中控件和变量之间数据传递的方式
- qt拖放 控件之间拖放 自定义数据
- VC 窗口创建以及窗口之间传递数据、传递消息(模态、非模态)
- vc vb间数据传递
- MATLAB图形界面开发--控件之间数据传递
- vc和vb之间传递safearray时,vc中的char类型在vb中可能会出问题
- VB 调试 VC 写的.OCX控件
- VC 窗口创建以及窗口之间传递数据、传递消息(模态、非模态)
- VC与Matlab混合编程及复杂数据:结构体传递
- cocos2dx EventListenerCustom类控制事件的分发 处理不同层之间的事件传递以及自定义用户数据
- 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
- 使用MVC框架中要注意的问题(五):如何在页面和用户控件之间传递数据
- VC VB OCX传递参数郁闷记
- 委托与事件的简单应用(不同控件之间的控制及参数传递,C# VB)
- VC 窗口创建以及窗口之间传递数据、传递消息(模态、非模态)
- Matlab GUI 设计(4):不同控件之间的数据传递
- MFC的WebBrowser控件 C++与JavaScript之间数据交互传递
- 自定义实体类在三层架构之间传递数据
- vc如何自定义消息与在线程中向主窗体控件发送数据
- matlib同一界面中不同控件之间的数据传递机制