在Windows x64下使用Atom的GetProp()/ SetProp()

时间:2016-05-27 06:18:02

标签: c++ windows

我使用GetProp()/ SetProp()和Atom。在x64下,' lpString' SetProp()的长度为64位。

MS doc说:"原子必须放在lpString的低位字中;高阶词必须为零。" 请参阅:https://technet.microsoft.com/de-de/ms633568

通常我用来设置lpString参数,它在x32下似乎没问题。但是" word"的定义是什么?在x64下?

GetProp(hwnd,(LPCTSTR)MAKELONG(atom,0))在x64下创建一个警告,这是正确的。但是这里应该使用什么类型的转换?

2 个答案:

答案 0 :(得分:1)

警告是什么?可能需要将其转换为(LPTSTR)。

答案 1 :(得分:1)

意思是字符串指针的无符号数值必须低于65535(0xFFFF)。必须清除所有高位。因此在x64中,较高的48位必须为零。术语'字'始终指的是16位值。没有为x64更新MS文档,并且在x32中讨论了32位指针。

0xFFFF的上限值的逻辑是进程中的(已分配)内存始终远远高于0xFFFF地址。例如,大多数可执行文件都在x32中的0x40000加载。因此指针可以被重复使用"只要整数低于0xFFFF就存储一个整数,而地址上没有任何可能存在的内存。