求救:VB调用VC编写的时遇到的问题

fakir 2000-03-24 11:07:00
最近我在用VB测试VC写的DLL时遇到了如下问题:
在VC写的DLL的输出涵数中,参数具有自定义的结构数据类型在此复杂的结构中又含有联合等类型,如下所示:
typedef struct tag_TSP_COMMANDFIELD
{
UCHAR commandcode : 6;
UCHAR morebit : 1;
UCHAR lengthbit : 1;
} TSP_COMMANDFIELD;

typedef struct tag_TSP_COMMAND
{
union
{
UCHAR codefield;
TSP_COMMANDFIELD codefieldunion;
};
UCHAR datalength;
UCHAR data[255];
} TSP_COMMAND;

//输出涵数定义:
TONGSP_API BOOL TSP_OpenCommunication( TSP_COMMAND pCommand );

请问我在VB中应该怎样定义此结构和声明涵数?还请大家多多指教,谢谢!
...全文
76 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-03-24
  • 打赏
  • 举报
回复
由于 VB 不支持联合及位操作,所以你必须使用固定声明和逻辑运算操作。

Type typTSPCOMMAND
Dim CodeField As Byte
Dim DataLength As Byte
Dim Data(254) As Byte
End Type

Const conbytcommandcode As Byte = &HFC
Const conbytmorebit As Byte = &H2
Const conbytlengthbit As Byte = &H1
'以上三行可能有错,我忘了 C 中是高位在前还是低位再前了。

Private Function GetBitByte(Tsp As typTSPCOMMAND, ByVal BitMask As Byte) As Byte
GetBitByte = (vTsp.CodeField And BitMask)
End Function


Dim vTsp As typTSPCOMMAND

相当使用 codefield 时直接访问:
vTsp.CodeField

相当使用 commandcode 时用:
GetBitByte(vTsp, conbytcommandcode)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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