我正在关注本教程: http://www.winprog.org/tutorial/start.html
在第4节(消息循环)上(http://www.winprog.org/tutorial/message_loop.html) 有代码
WNDPROC fWndProc = (WNDPROC)GetWindowLong(Msg.hwnd, GWL_WNDPROC);
fWndProc(Msg.hwnd, Msg.message, Msg.wParam, Msg.lParam);
我尝试在此处编译,但出现此消息错误: GWL_WNDPROC未声明
我该如何解决?
答案 0 :(得分:3)
<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)
如果定义了_WIN64
(您的目标是64位),则GWL_WNDPROC
确实是未定义的。您需要改用GWLP_WNDPROC
对于GWLP_WNDPROC
,您还需要使用GetWindowLongPtr
和SetWindowLongPtr
,而不是GetWindowLong
和SetWindowLong