为什么在VB.net中申明API函数时要把long改为int32?解决办法

为什么在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中的整数大小是一样的了.