#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