WIN32API函数声明中,同样一个句柄参数,为什么有些人用int,有些人用IntPtr?

WIN32API函数声明中,同样一个句柄参数,为什么有些人用int,有些人用IntPtr?

问题描述:

WIN32API函数声明中,同样一个句柄参数,为什么有些人用int,有些人用IntPtr?
可以随便用吗?还是有什么讲究?

终于明白了,应该是SendMessage有多个不同参数类型的重载版本。

这两个肯定是不一样的,你看到的是什么

比如,SendMessage的声明,
有些人这样写:
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(
int hWnd,
int wMsg,
int wParam,
IntPtr lParam
);

也有人这样写:
[DllImport("user32.dll")]

private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

查看MSDN也看不明白啊,求指点下,谢谢bdmh.

64位下32位下 intptr不一样
int则没区别

也有人这么声明:
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
网址:http://wenku.baidu.com/link?url=xWZp9ha9a7i_hwlW6eui6QB5HiL6ufzxRbnLPYfTI4OzAz5ThijPQGkgIOCXg6T1JtCGNOFOJcSWW3YCWFYDXXiuQHPouyEdmti_D6Zo9eG

为什么会这样?