首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LPARAM和WPARAM的定义是什么?

LPARAM和WPARAM的定义是什么?
EN

Stack Overflow用户
提问于 2010-03-25 20:06:38
回答 6查看 68.3K关注 0票数 66

我知道我在这里很懒,我应该自己搜索头文件,但是LPARAM和WPARAM参数的实际类型是什么呢?它们是指针,还是四个字节的整数?我正在做一些C#互操作代码,并希望确保它能在x64系统上工作。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-25 20:10:50

LPARAMLONG_PTR的类型定义,它是win32上的long (带符号的32位)和x86_64上的__int64 (带符号的64位)。

WPARAMUINT_PTR的类型定义,它是win32上的unsigned int (无符号32位)和x86_64上的unsigned __int64 (无符号64位)。

MSDN link

票数 96
EN

Stack Overflow用户

发布于 2010-06-30 13:30:26

这些typedefs可以追溯到16位时代。最初,LPARAMlong (有符号32位),WPARAMWORD (无符号16位),因此称为W and L。由于通常将强制转换的指针作为消息参数传递,因此WPARAM在Win32上扩展到32位,LPARAMWPARAM在Win64上扩展到64位。

在C#中,您应该对LPARAM使用IntPtr,对WPARAM使用UIntPtr

请注意,尽管有LP前缀,但LPARAM不是指向ARAM的远指针。

票数 64
EN

Stack Overflow用户

发布于 2010-03-25 20:09:44

LPARAM指的是LONG_PTR,而WPARAM指的是UINT_PTR

在x86上是4个字节,在x64上是8个字节。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2515261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档