我使用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下创建一个警告,这是正确的。但是这里应该使用什么类型的转换?
答案 0 :(得分:1)
警告是什么?可能需要将其转换为(LPTSTR)。
答案 1 :(得分:1)
意思是字符串指针的无符号数值必须低于65535(0xFFFF
)。必须清除所有高位。因此在x64中,较高的48位必须为零。术语'字'始终指的是16位值。没有为x64更新MS文档,并且在x32中讨论了32位指针。
0xFFFF
的上限值的逻辑是进程中的(已分配)内存始终远远高于0xFFFF
地址。例如,大多数可执行文件都在x32中的0x40000
加载。因此指针可以被重复使用"只要整数低于0xFFFF
就存储一个整数,而地址上没有任何可能存在的内存。