WinAPI中是否有与GLFW的glfwGetWindowUserPointer等效的功能?

时间:2018-12-29 00:54:17

标签: winapi window glfw

因此,我已经使用WinAPI创建了一个窗口,并且具有处理窗口消息的WindowProc回调函数。在此函数中,我要访问包装在WinAPI HWND上的自己的结构,以更改存储在该结构中的其他变量。

我知道GLFW提供了功能glfwSetWindowUserPointerglfwGetWindowUserPointer来满足这一需求。我尝试在https://docs.microsoft.com/en-us/windows/desktop上搜索 GetWindowUserPointer WindowUserPointer WindowPointer UserPointer ,但没有找到结果

使用WinAPI是否有任何功能或其他方法可以满足这一需求?

1 个答案:

答案 0 :(得分:3)

SetWindowLongPtr()GetWindowLongPtr()

窗口创建者始终可以使用GWLP_USERDATA,您可以存储选择的任何数据指针。如果在注册窗口类时保留了额外的空间(cbWndExtra,则可以以正的偏移量存储其他数据。

一种常见的技术是使用WM_NCCREATElpParam的{​​{1}}参数复制指针,然后使用CreateWindowEx将其复制到窗口数据。然后,窗口过程中的其他情况可以检索指针并获取关联的对象。

Raymond Chen有a complete explanation使用此功能将消息转发到成员函数。