Получать сообщения из окна, для которого у вас есть только HWND?

#c #winapi

#c #winapi

Вопрос:

Я использую API для игр. Это создает окно для меня, но есть несколько сообщений, с которыми я хотел бы что-то сделать. Например, при изменении размера экрана я хочу отобразить черный экран. По сути, у меня есть HWND моего главного окна, и я хотел бы прослушать сообщения и пропустить их через мой пользовательский WndProc до или после их обработки, я просто хочу знать, когда окно получает сообщения типа WM_SIZE или что-то в этом роде.

Существует ли API для этого?

Спасибо

Комментарии:

1. Это может быть задание для SetWindowsHookEx

Ответ №1:

Если вы находитесь в том же процессе с окном, которое хотите перехватить WM_SIZE, вы можете просто заменить WndProc на SetWindowLongPtr на GWLP_WNDPROC . Обратите внимание, что вы должны передать другие сообщения в исходный WndProc.

Однако, если вы находитесь в другом процессе, вам нужно найти способ, используя такие перехваты, как SetWindowsHookEx

Комментарии:

1. 1; вероятно, здесь лучше использовать подклассы. К вашему сведению — SetWindowLong устарел для WNDPROC и других значений размера указателя; используйте SetWindowLongPtr для совместимости как с Win32, так и с Win64 — отредактировал ответ, чтобы отразить это.

2. Кстати: ссылка MSDN по-прежнему указывает на SetWindowLong вместо SetWindowLongPtr