LPARAM和WPARAM的定义是什么?
我知道我在这里偷懒,我应该为自己拖拽头文件,但是LPARAM和WPARAM参数的实际types是什么? 他们是指针,还是四字节整数? 我正在做一些C#互操作代码,并希望确保我能在x64系统上工作。
  LPARAM是LONG_PTR一个typesLONG_PTR ,它是win32上的long (有符号32位)和x86_64上的__int64 (signed 64位)。 
  WPARAM是UINT_PTR的typedef,它是win32上的unsigned int (无符号32位)和x86_64上unsigned __int64 (无符号64位)。 
MSDN链接
 这些typedef回到16位的日子。 最初, LPARAM是long (有符号的32位),而WPARAM是WORD (无符号的16位),因此是W和L. 由于将stream水指针作为消息parameter passing的常见做法, WPARAM在Win32上扩展为32位,并且在Win64上LPARAM和WPARAM都扩展为64位。 
 在C#中,您应该将LPARAM和UIntPtr用于WPARAM。 
 请注意,尽pipe有LP前缀, LPARAM并不是远指向ARAM指针。 
LPARAM引用LONG_PTR,WPARAM引用UINT_PTR
在x86上,它们将是4个字节,在x64上它们将是8个字节。
这里:
 typedef UINT_PTR WPARAM; typedef LONG_PTR LPARAM; 
你需要我的朋友是http://www.pinvoke.net/