Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2011, 14:47   #1
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию WM_QUIT

Хочу сделать так, чтобы процедура окна, обрабатывающая сообщение WM_QUIT не завершала работу, а вывела уведомление, что это сделать невозможно. Мне кажется, что правильно всё сделал: закомментил нужные строки и написал обработчик сообщения. Но стало только ещё хуже, т.к. процесс в памяти остаётся.

Код:
...
msg_loop:
  push 0
  push 0
  push 0
  push offset msg
  call GetMessageA@16
  ;cmp eax,0
  ;je end_loop
  push offset msg
  call TranslateMessage@4
  push offset msg
  call DispatchMessageA@4
  jmp msg_loop
end_loop:
  push msg.mswparam ; Код выхода (wParam WM_QUIT)
  call ExitProcess@4
...
  cmp dword ptr [ebp+0Ch],WM_DESTROY
  je wmdestroy
  cmp dword ptr [ebp+0Ch],WM_QUIT
  je wmquit
  jmp defwindowproc
wmdestroy:
  push 0 ; nExitCode - код завершения; исп-ся как параметр WM_QUIT
  call PostQuitMessage@4 ; пом-ет WM_QUIT в очередь сообщений
  jmp finish
wmquit:
  push 0
  push offset cap
  push offset mes
  push dword ptr [ebp+08h]
  call MessageBoxA@16
  jmp finish
...
Ang15 вне форума Ответить с цитированием
Старый 01.11.2011, 15:24   #2
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

сообщение WM_QUIT это только уведомление. если окно получает это сообщение ему остаётся только смириться с тем что его хотят завершить. надо обрабатывать WM_CLOSE
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 01.11.2011, 21:45   #3
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию

Спасибо за совет. Перечитал про WM_QUIT и нашёл там, что сообщение не обрабатывается процедурой окна.
...
Всё. Разобрался. WM_CLOSE -> WM_DESTROY -> WM_QUIT.

Последний раз редактировалось Ang15; 01.11.2011 в 22:43.
Ang15 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск