Я работаю над игрой, в которой клиент должен продолжать обрабатывать сообщения Windows, иначе игра может быть взломана. Чтобы решить эту проблему во время событий изменения размера окна и перетаскивания, у нас есть сообщение WM_TIMER
, которое срабатывает каждые 50 мс и перезапускает основной цикл событий.
Проблема в том, что этот метод не работает, когда пользователь нажимает и удерживает кнопку X или кнопку сворачивания в оконном клиенте. (Поэтому они не завершают щелчок, а просто останавливают клиент.)
Используя Spy++, последние сообщения, которые я вижу:
<00731> 00160D3C P WM_NCLBUTTONDOWN nHittest:HTCLOSE xPos:1150 yPos:178
<00732> 00160D3C P WM_MOUSEMOVE fwKeys:MK_LBUTTON xPos:1014 yPos:-23
Далее ничего, пока я не перемещу мышь, и никаких WM_TIMER
сообщений, пока я не отпущу кнопку мыши.
Итак, вопрос в том, что, пока я нахожусь в состоянии, когда моя мышь находится над кнопкой X окна, есть ли что-то, что я мог бы отключить, чтобы клиент снова начал двигаться? Или что-то, что я мог бы сделать, чтобы наши «сторожевые» сообщения WM_TIMER
срабатывали?