GWL_WNDPROC未声明

时间:2018-08-09 15:39:10

标签: c winapi

我正在关注本教程: 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未声明

我该如何解决?

1 个答案:

答案 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,您还需要使用GetWindowLongPtrSetWindowLongPtr,而不是GetWindowLongSetWindowLong