为什么在VB.net中申明API函数时要把long改为int32?
我使用findwindow函数,
在VB中如下正确使用
Public Declare Function FindWindow Lib "user32 " Alias "FindWindowA " (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
但在VB2005中要把long改为int32才可以,不知何故啊?是不是vb中的long相当于VB.net中的int32啊?VB和VB.net中的long有什么区别?
[解决办法]
long在内存占8字节,int32占4字节
[解决办法]
楼上正解
[解决办法]
一直到6.0时代,VB中的Integer都是16位的,Long是32位的;而从.NET开始,VB中的Integer变成32位(Int32),而Long变成64位(Int64),与C系列语言看齐。即过去的Long现在变成Integer了。而我们通常看到的API函数的定义还是6.0时代的,所以如果不进行重新定义的话就会导致堆栈错误。
[解决办法]
类型长度变啦
[解决办法]
在VB.NET中不用As Long了,Integer本身和API中的整数大小是一样的了.