SendMessage API为64位

时间:2008-11-12 08:15:32

标签: c++ c winapi

根据MSDN

  

返回值指定结果   消息处理;这取决于   在发送的消息上。

我知道它被定义为

typedef LONG_PTR LRESULT;

意味着它在64位机器上将是8个字节,但它没有!

有没有人知道是否可以安全地假设只使用了较低的4个字节并将其存储为INT(例如)。

3 个答案:

答案 0 :(得分:4)

不,它不安全,因为返回值是由发送的消息和处理程序定义的。

如果您控制处理程序和消息然后它是可能的,在一般情况下它是不安全的。

詹姆斯

答案 1 :(得分:1)

不,一般不安全。不要假设垂头丧气。另外,使用/ RTCc编译代码非常有用,可确保在运行时声明无意的强制转换。

答案 2 :(得分:1)

绝对不安全。如果消息返回确实是指针,则指针很可能设置其第33位 - 特别是在具有> 4GB内存的计算机上。