c++ - WPARAM 和 LPARAM 参数

标签 c++ api winapi

将值传递给同时接受 WPARAM 和 LPARAM 参数的函数时,我传递其中的哪一个参数是否重要?有人告诉我,如果我使用 Windows x64,我应该使用 WPARAM;这是真的?

最佳答案

发送消息时,WPARAMLPARAM 参数根据消息有特定的解释。您需要以您发送的消息期望它们传递的方式传递这些参数。如果您正在定义自己的消息(可能通过 WM_USERWM_APPRegisterWindowMessage 的偏移量),那么您显然有更多的自由度。

In the days of 16-bit WindowsWPARAM 是 16 位字,而 LPARAM 是 32 位长。这些区别在 Win32 中消失了。它们都变成了 32 位值。

根据this , LPARAM 定义为 LONG_PTR,在 64 位 Windows 中是一个有符号的 64 位值。 WPARAM 定义为 UINT_PTR,在 64 位 Windows 中是一个无符号的 64 位值。如果您要定义自己的消息,则可能需要相应地分配其参数。

关于c++ - WPARAM 和 LPARAM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339793/

相关文章:

c++ - 在什么平台上 func(shared_ptr(...), shared_ptr(...)) 真的很危险?

c++ - 如何将 `void(*fn)(const char *, ...)` 转换为 `std::function`,反之亦然

cocoa - 如何获取 Mac OS X 事件桌面的 ID?

winapi - 从 GDI+ 迁移到 OpenGL 有什么缺点吗?

c# - 在 C# 中使用 win32 API 操作简单的 Windows 计算器?

c++ - 让 C++ 和 Ruby 共享公共(public)类的最佳方式是什么?

C++ ifstream,ofstream : What's the difference between raw read()/write() calls and opening file in binary mode?

javascript - Safari 推送通知 Pushmanager 无法注册

JSON 导入 Excel

windows - 获取主题编辑控件的非客户区的大小