Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > лови момент


Автор: suborg 13.12.2002, 03:41
Программка должна улавливать момент, когда юзер нажал на завершение работы. Как-то пока не получается. Пишу на MSVC диалоговое приложение MFC. По идее винда рассылает всем WM_QUERYENDSESSION, по нему можно всё понять, но где его ловить не понятно - куда ни ткнусь, никуда оно не приходит. Пробовал поставить обработчики на OnClose окон, на PreProcessMsg и т.п. - ни где не выскакивает если завершать работу. Закрытие программы по Alt-F4 или крестиком отлавливается, а по shutdown - не получается.
Может есть соображения, где его ловить-то?

Автор: Step 13.12.2002, 18:25
тове сообщение по всей видимости отправляется только системным процессам, а они уже рассылают сообщения тима, wm_close. так что твое сообщение врядли попадает к тебе в приложение, кстати ты в APP, его ловить пробывал или нет

Автор: suborg 14.12.2002, 00:07
Не, дело не в этом. Я разобрался уже. Там просто можно устанавливать фильтры сообщений для классов, так вот по умолчанию в диалоговом приложении на окно ставится фильтр диалоговых сообщений, другие до него не доходят, можно снять этот фильтр и поставить фильтр всех сообщений window, тогда приходит этот самый WM_QUERYENDSESSION, и всё прекрасно работает :)
Это ClassWizard делается легко.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)