GWL_WNDPROC未声明

Rod*_*hio 2 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);
Run Code Online (Sandbox Code Playgroud)

我在这里尝试编译,但收到此消息错误:GWL_WNDPROC未声明

我该如何解决?

RbM*_*bMm 6

<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)
Run Code Online (Sandbox Code Playgroud)

如果_WIN64已定义(您的目标是64位),GWL_WNDPROC则实际上是未定义的。你需要使用GWLP_WNDPROC替代

GWLP_WNDPROC需要使用GetWindowLongPtrSetWindowLongPtr但不是GetWindowLongSetWindowLong