根據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