我正在关注本教程: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未声明
我该如何解决?
在<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
需要使用GetWindowLongPtr
,SetWindowLongPtr
但不是GetWindowLong
和SetWindowLong