[英]Convert C++ Union Struct to VB6
我的C ++应用程序中有以下结构:
struct textField
{
//0
union nameField
{
void* ptr;
char cstring[16];
} text;
//16
uint8_t textLength;
//17
char unknown1[3];
//20
uint8_t fieldType;
//21
char unknown2[3];
//24
uint32_t unknown3;
//28
};
而且我知道在VB6中,它看起来像这样:
Private Type textField ' 0
cstring(0 To 15) As Byte ' 16
textLength As Byte ' 17
unknown1(0 To 2) As Byte ' 20
fieldType As Byte ' 21
unknown2(0 To 2) As Byte ' 24
unknown3 As Long ' 28
End Type
但是结构中的联合呢? 如何实现?
最简单的方法是使用变量类型-它可以包含其他任何类型。
请注意,有可能是没有直接的映射void *
到VB,所以你需要研究工会是如何使用的,而不仅仅是一个快速转换。
使用LSET
命令。
它不是根据该结构声明的,而是在声明该对象的实例之后声明的。
范例 :
Private Type MyType1
x as Integer
y as Integer
z as Integer
w as Integer
End Type
Private Type MyType2
a as Long
b as Long
End Type
Private Sub Form_Load()
Dim t1 as MyType1
Dim t2 as MyType2
t1.x = 0
t1.y = 0
t1.z = -1
t1.w = -1
LSet t2 = t1
....
这与两种类型之间的未命名联合具有相同的效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.