当前位置:编程学习 > VB >>

那个老大给转下vc转vb

--------------------编程问答-------------------- 那个老大有空麻烦帮忙改下呗.实在弄不明白了. --------------------编程问答-------------------- 先找出数据结构中每一个类型的长度, 然后再找到VB中对应长度的类型定义即可 --------------------编程问答-------------------- 你这个VB就根本无法转,起码位域部分就让你蛋疼 --------------------编程问答-------------------- 无法在 VB 中直接定义。
InterfaceAndOperStatusFlags 正好 8 位,对应成 VB 中的 Byte 数组,但是由于存在 32 位对齐,实际占 4 字节。
验证如下
Option Explicit
Type TestStruct
    InterfaceAndOperStatusFlags As Byte
    OperStatus                  As Long
End Type

Sub Main()
    Dim t As TestStruct
    Debug.Print LenB(t)
End Sub
'期待结构长度为5,实际输出为8


你应该用 VC 生成一个 tlb 供 VB 引用。 --------------------编程问答--------------------
引用 4 楼 Tiger_Zhao 的回复:
无法在 VB 中直接定义。
InterfaceAndOperStatusFlags 正好 8 位,对应成 VB 中的 Byte 数组,但是由于存在 32 位对齐,实际占 4 字节。
验证如下
Option Explicit
Type TestStruct
    InterfaceAndOperStatusFlags As Byte
    OperStatus                  As Long
End Type

Sub Main()
    Dim t As TestStruct
    Debug.Print LenB(t)
End Sub
'期待结构长度为5,实际输出为8


你应该用 VC 生成一个 tlb 供 VB 引用。


这个你也得看VC生成的字节对齐情况,字节在到别的数据类型之间VC分配的单元不一定相连 --------------------编程问答--------------------
引用 5 楼 worldy 的回复:
这个你也得看VC生成的字节对齐情况,字节在到别的数据类型之间VC分配的单元不一定相连

按常规讨论跨语言结构时都是紧凑模式的,否则 VC 来个 8 字节对齐的编译参数,不被玩死了。 --------------------编程问答--------------------
引用 6 楼 Tiger_Zhao 的回复:
Quote: 引用 5 楼 worldy 的回复:
这个你也得看VC生成的字节对齐情况,字节在到别的数据类型之间VC分配的单元不一定相连

按常规讨论跨语言结构时都是紧凑模式的,否则 VC 来个 8 字节对齐的编译参数,不被玩死了。

是的,这个没办法玩,想玩也可以,就是多尝试,最终是浪费时间
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,