{{notification.text}}

MirGames

23.07.06 15:38
0
Дайте пожалуйста пример грамотного закрытия приложения на с++ с использованием дайректдро.
Вот я когда хочу закрыть приложение, я посылаю сообщение WM_CLOSE, в обработчике сообщений оно обрабатывается стандартным обработчиком и посылает сообщение WM_QUIT, в главном цикле программы вытягиевается это сообщение и если это WM_QUIT, то выполняется Game_Shutdown где освобождаются все ресурсы.
Однако если закрывать приложение с помощью Alt+F4, то вообще не понятно что делается, окно закрывается, а процесс в памяти остаётся, Game_Shutdown не выполняется. Что вообще делать если юзер нажал Alt+F4???
#1
Мастер XO
23.07.06 15:50
0
Alt+F4 дает wm_Close... А у тя это клозе обрабатывается? Исходя из твоего сообщения закрытие происходит если программа получает wm_Quit:
Цитата
и если это WM_QUIT, то выполняется Game_Shutdown где освобождаются все ресурсы.
Ты добавь еще условие "и если это wm_Close"...
Отредактировано: 23.07.06 16:00
#2
23.07.06 16:30
0
Я ж и говорю, WM_CLOSE не обрабатывается мною, но оно обрабатывается виндовсом - он сам закрывает окно и высылает WM_QUIT. Если я добавлю
Цитата(BadSmile @ Сегодня, 07:50)
[snapback]32088[/snapback]
Ты добавь еще условие "и если это wm_Close"...
, то окно не будет закрываться, а все ресурсы выгрузятся, что не есть гуд.
#3
Мастер XO
23.07.06 17:07
0
Так ты в процедуру окончания работы поставь и уничтожение окна...
#4
if not b then b:=not b;
23.07.06 17:09
0
PostQuitMessage(0); переправляет на WM_CLOSE
#5
23.07.06 20:03
0
Добавил в обработчик:
case WM_CLOSE:
{
Game_Shutdown();
PostQuitMessage(0);
return(0);
} break;
Теперь всё работает. Спасибо.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}