Окт 13

Обработка сообщений WM_CLOSE и WM_DESTROY

Сообщение WM_CL0SE появляется, когда пользователь щелкает мышью на кнопке закрытия окна или нажимает комбинацию клавиш Alt+F4. Вообще, обработка этого сообщения не обязательна: если она отсутствует, то функция DefWindowProc вызовет по умолчанию функцию DestroyWindow. Но если вы хотите предусмотреть вывод каких-либо предупреждающих сообщений типа «А вы точно уверены, что хотите это сделать?», то данное место — самое подходящее. Ибо окно еще не разрушено, а вот после сообщения WM_DESTROY окна на экране уже нет.
Функция DestroyWindow, оправдывая свое имя, разрушает указанное в ее параметре окно. Для этого она посылает окну сообщение WM_DESTROY. Если у данного окна есть дочерние окна, то функция посылает WM_DESTROY сначала ему, а потом уже дочерним окнам. Функция завершает свою работу только после уничтожения всех дочерних окон.
Когда главное окно приложения получает сообщение WM_DESTROY, то оконная процедура должна позаботиться о том, чтобы приложение корректно «покинуло сцену». Для этого вызывается функция PostQuitMessage, посылающая сообщение WM_QUIT. Ну а что происходит в цикле обработки сообщений при появлении WM_QUIT, вы уже знаете.
Разрешите вас поздравить: мы завершили анализ текста программы Hellol — первого варианта приложения «Hello, World!».
Как, будет еще и второй вариант?.. — Не волнуйтесь, пояснения к нему будут гораздо короче.