根据MSDN的SendMessage API在64位
返回值指定结果的消息处理的 ;它取决于发送的消息 。
我知道它被定义为
typedef LONG_PTR LRESULT;
,也就是说它会在64位计算机上的8个字节,但它不会!
有谁知道假设只使用较低的4字节并将其存储为INT
(例如)是否安全。
根据MSDN的SendMessage API在64位
返回值指定结果的消息处理的 ;它取决于发送的消息 。
我知道它被定义为
typedef LONG_PTR LRESULT;
,也就是说它会在64位计算机上的8个字节,但它不会!
有谁知道假设只使用较低的4字节并将其存储为INT
(例如)是否安全。
不,它不安全,因为返回值是由发送的消息和处理程序定义的。
如果你控制处理程序和消息,那么它是可能的,这在一般情况下是不安全的。
James
不,它一般不安全。不要认为沮丧。另外,有用的是用/ RTCc编译你的代码,这可以确保无意的强制转换在运行时被声明。
绝对不安全。如果消息返回确实是一个指针,指针的第33位就很可能被设置 - 特别是在内存大于4GB的机器上。
由于内存虚拟化,这可能也会发生在小于4GB的情况下。 – efotinis 2008-11-18 10:10:51