因此,我已经使用WinAPI创建了一个窗口,并且具有处理窗口消息的WindowProc回调函数。在此函数中,我要访问包装在WinAPI HWND
上的自己的结构,以更改存储在该结构中的其他变量。
我知道GLFW提供了功能glfwSetWindowUserPointer
和glfwGetWindowUserPointer
来满足这一需求。我尝试在https://docs.microsoft.com/en-us/windows/desktop上搜索 GetWindowUserPointer , WindowUserPointer , WindowPointer 和 UserPointer ,但没有找到结果
使用WinAPI是否有任何功能或其他方法可以满足这一需求?
答案 0 :(得分:3)
有SetWindowLongPtr()
和GetWindowLongPtr()
窗口创建者始终可以使用GWLP_USERDATA
,您可以存储选择的任何数据指针。如果在注册窗口类时保留了额外的空间(cbWndExtra
,则可以以正的偏移量存储其他数据。
一种常见的技术是使用WM_NCCREATE
从lpParam
的{{1}}参数复制指针,然后使用CreateWindowEx
将其复制到窗口数据。然后,窗口过程中的其他情况可以检索指针并获取关联的对象。
Raymond Chen有a complete explanation使用此功能将消息转发到成员函数。