<WinUser.h> 中:
/*
* Window field offsets for GetWindowLong()
*/
#define GWL_WNDPROC (-4)
...
#ifdef _WIN64
#undef GWL_WNDPROC
#undef GWL_HINSTANCE
#undef GWL_HWNDPARENT
#undef GWL_USERDATA
#endif /* _WIN64 */
#define GWLP_WNDPROC (-4)
可以看出确实没定义。
解决方法:
GetWindowLongPtr 和 SetWindowLongPtr 分别替换 GetWindowLong 和 SetWindowLong
GWL_WNDPROC替换为GWLP_WNDPROC,
GWL_USERDATA替换为GWLP_USERDATA
本文解析了<WinUser.h>文件中关于窗口长字段偏移量的定义,针对64位环境下GWL_WNDPROC等宏被取消定义的问题,提出了使用GetWindowLongPtr和SetWindowLongPtr替代原有函数,以及GWLP_WNDPROC和GWLP_USERDATA替代GWL_WNDPROC和GWL_USERDATA的解决方案。
547

被折叠的 条评论
为什么被折叠?



