SendMessage API в 64 бит - PullRequest
       8

SendMessage API в 64 бит

0 голосов
/ 12 ноября 2008

По MSDN

Возвращаемое значение указывает результат обработки сообщений; это зависит на отправленное сообщение.

Я знаю, что это определено как

typedef LONG_PTR LRESULT;

Это означает, что на 64-битной машине это будет 8 байт, но это не так!

Кто-нибудь знает, безопасно ли предположить, что используются только младшие 4 байта, и сохранить его как INT (например).

Ответы [ 3 ]

4 голосов
/ 12 ноября 2008

Нет, это небезопасно, поскольку возвращаемое значение определяется отправляемым сообщением и обработчиком.

Если вы управляете обработчиком и сообщением, тогда это будет возможно, это не безопасно в общем случае.

Джеймс

1 голос
/ 12 ноября 2008

Определенно не безопасно. Если возвращаемое сообщение действительно является указателем, для указателя вполне может быть установлен 33-й бит, особенно на компьютерах с объемом памяти> 4 ГБ.

1 голос
/ 12 ноября 2008

Нет, это не безопасно в целом. Не думайте, что уныние. Кроме того, полезно скомпилировать код с помощью / RTCc, который обеспечивает непреднамеренное приведение типов во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...