vb在调用api的时候参数传递的问题

mayaxteam 2003-01-27 09:48:36
使用vb调用api的时候,经常被API复杂的变量类型给搞糊涂了,有的时候要传值,有的时候要传址,还有就是经常结构体的大小取的不正确,晕...

例如:

lpRasDialParams.dwSize = 736
lngRetlstrcpy = lstrcpy(lpRasDialParams.szEntryName(0), "")
lngRetlstrcpy = lstrcpy(lpRasDialParams.szPhoneNumber(0), szPhoneNumber)
lngRetlstrcpy = lstrcpy(lpRasDialParams.szCallbackNumber(0), "")
lngRetlstrcpy = lstrcpy(lpRasDialParams.szUserName(0), szUserName)
lngRetlstrcpy = lstrcpy(lpRasDialParams.szPassword(0), szPassword)
lngRetlstrcpy = lstrcpy(lpRasDialParams.szDomain(0), "")
'lpRasDialParams.dwSize = Len(lpRasDialParams)


dwReturn = RasDial(ByVal APINULL, vbNullString, lpRasDialParams, 0, ByVal 0, hRasConn)

我使用LEN()函数取出的结构体的大小就是不正确的,为什么?
...全文
12 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zyl910 2003-01-28
String必须传值
因为VB的String是BSTR,而一般API需要的是LPTSTR,必须加上ByVal转换


至于其他类型
根据C语言函数原型决定
带*号 或 数据类型以lp开头、数组 表示是一个指针,用ByRef
否则一般用ByVal
回复
mayaxteam 2003-01-27
不知大家谁有API的使用经验,比如变量类型对应关系,和什么时候传值,什么时候传地址,能不能贴出来大家分享?
回复
相关推荐
发帖
API
创建于2007-09-28

1461

社区成员

VB API
申请成为版主
帖子事件
创建了帖子
2003-01-27 09:48
社区公告
暂无公告