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()函数取出的结构体的大小就是不正确的,为什么?
...全文
68 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2003-01-28
  • 打赏
  • 举报
回复
String必须传值
因为VB的String是BSTR,而一般API需要的是LPTSTR,必须加上ByVal转换


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

1,488

社区成员

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

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