Есть ли в WinAPI функция, эквивалентная GLFW glfwGetWindowUserPointer? - PullRequest
0 голосов
/ 29 декабря 2018

Итак, я создал окно, используя WinAPI, и у меня есть функция обратного вызова WindowProc, которая обрабатывает оконные сообщения.В этой функции я хочу получить доступ к моей собственной структуре, которая охватывает WinAPI HWND, чтобы изменить другие переменные, хранящиеся в этой структуре.

Я знаю, что GLFW предоставляет функции glfwSetWindowUserPointer и glfwGetWindowUserPointer для заполненияэто нужно.Я пытался найти GetWindowUserPointer , WindowUserPointer , WindowPointer и UserPointer на https://docs.microsoft.com/en-us/windows/desktop,, но не нашел результатов.

Есть ли какая-либо функция или другой метод для удовлетворения этой потребности с помощью WinAPI?

1 Ответ

0 голосов
/ 29 декабря 2018

Существует SetWindowLongPtr() и GetWindowLongPtr()

Создатель окна всегда может использовать GWLP_USERDATA, вы можете хранить любой указатель данных по вашему выбору.Если вы резервируете дополнительное пространство (cbWndExtra) при регистрации класса окна, вы также можете хранить дополнительные данные с положительными смещениями.

Обычный метод - использовать WM_NCCREATE для копирования указателя с lpParam параметр CreateWindowEx и скопировать его в данные окна, используя SetWindowLongPtr.Тогда другие случаи в оконной процедуре могут извлечь указатель и получить связанный объект.

У Раймонда Чена есть полное объяснение использования этой функции для пересылки сообщений в функцию-член.

...