Windows API 调用中 Long 变量类型的 Null 值是什么?
愚蠢的问题。我认为这应该是0,但我似乎找不到它。
那么,如果我想将 Null 值传递给 Windows API 调用(这恰好是在 VB6 中),我会使用什么值? 我认为是 0,但我猜可能是 VBNull。
Stupid question. I think this should be 0, but I can't seem to find it.
So, if I want to pass a Null value to a Windows API call (this happens to be in VB6), what value would I use?
I think 0, but I guess it could be VBNull.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果 API 参数是
LONG
(而不是LPVOID
),请尝试传递零长整数文字0&
。If the API argument is a
LONG
(and not, say, anLPVOID
), try passing the zero long integer literal0&
.通常,这将是一个空指针,而不是空值。
那么就看实际使用的Declare语法了。如果声明的参数是
ByRef ... As ...
项,那么您会说ByVal 0&
(或有时vbNullString
)你的电话。但是,如果您在声明中将指针声明为
ByVal ... As Long
(与VarPtr()
、StrPtr()
等一起使用)。 )只需在调用中使用0&
就是您想要的。Often this would be a null pointer and not a null value.
Then it depends on the Declare syntax actually used. If the declared argument was a
ByRef ... As ...
item then you'd sayByVal 0&
(or sometimesvbNullString
) in your call.However if you declared pointers as
ByVal ... As Long
in the declaration (for use withVarPtr()
,StrPtr()
, etc.) simply using0&
in the call is what you want.