我知道我在这里很懒,我应该自己搜索头文件,但是LPARAM和WPARAM参数的实际类型是什么呢?它们是指针,还是四个字节的整数?我正在做一些C#互操作代码,并希望确保它能在x64系统上工作。
发布于 2010-03-25 20:10:50
LPARAM
是LONG_PTR
的类型定义,它是win32上的long
(带符号的32位)和x86_64上的__int64
(带符号的64位)。
WPARAM
是UINT_PTR
的类型定义,它是win32上的unsigned int
(无符号32位)和x86_64上的unsigned __int64
(无符号64位)。
发布于 2010-06-30 13:30:26
这些typedefs可以追溯到16位时代。最初,LPARAM
是long
(有符号32位),WPARAM
是WORD
(无符号16位),因此称为W and L。由于通常将强制转换的指针作为消息参数传递,因此WPARAM
在Win32上扩展到32位,LPARAM
和WPARAM
在Win64上扩展到64位。
在C#中,您应该对LPARAM
使用IntPtr
,对WPARAM使用UIntPtr
。
请注意,尽管有LP
前缀,但LPARAM
不是指向ARAM
的远指针。
发布于 2010-03-25 20:09:44
LPARAM指的是LONG_PTR,而WPARAM指的是UINT_PTR
在x86上是4个字节,在x64上是8个字节。
https://stackoverflow.com/questions/2515261
复制相似问题