Движок с нуля
Справочник

Событие окна

Запись о том, что случилось с окном: сдвинулась мышь, нажата клавиша, нажат крестик. Windows кладёт события в очередь программы, а программа забирает очередь сама.

Windows следит за мышью и клавиатурой. Когда что-то происходит над окном или с окном, Windows записывает это в очередь событий программы, одну на все окна программы: что случилось и с какими значениями, например «мышь сдвинулась в точку 640, 360» или «нажата клавиша W». В документации Windows такие записи называются сообщениями (messages).

Windows не может заставить программу прочитать событие: события лежат в очереди, пока программа сама их не заберёт. В движке курса очередь забирает функция GLFW glfwPollEvents, её вызывает каждая итерация главного цикла.

Что сделал пользователь Что лежит в очереди Что делает GLFW
сдвинул мышь мышь сдвинулась, координаты запоминает положение мыши
нажал клавишу клавиша нажата, код клавиши запоминает, что клавиша зажата
тянет окно за заголовок перетаскивание отдаёт Windows, и Windows двигает окно
нажал крестик закрыть окно ставит окну флаг «закрыть»
Почему окно пишет «Не отвечает»

Если программа несколько секунд не забирает события, Windows считает программу зависшей: дописывает к заголовку окна «(Не отвечает)» и рисует окно бледным. Так бывает, когда программа застряла в долгом вычислении или в цикле, где нет вызова glfwPollEvents. Как только программа снова забирает события, надпись пропадает.