0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 4
|
|||||||||||
1 | |||||||||||
Не обрабатывается WM_DESTROY04.02.2012, 15:10. Показов 3416. Ответов 7
Метки нет (Все метки)
Здравствуйте, вот случилось некоторое непонимание по поводу базовых функций окошек
Вот основной цикл main()
Так-же при любой другом действии с окном(перемещение) срабатывает "default" в switch(WndProc), тоесть сообщения обрабатываются, но именно впоймать WM_DESTROY не получается...
0
|
04.02.2012, 15:10 | |
Ответы с готовыми решениями:
7
WM_DESTROY закрывает не все окна Сообщения WM_DESTROY и WM_CLOSE Не обрабатывается исключение Не обрабатывается форма |
20 / 20 / 4
Регистрация: 23.10.2009
Сообщений: 139
|
|
04.02.2012, 15:17 | 2 |
Попробуй обработать WM_CLOSE, это сообщение должно посылаться по крестику. А в обработчике вручную послать WM_DESTROY. Примерно такая схема при работе с немодальными диалогами в МФЦ. Ну здесь я думаю также.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,696
|
|
04.02.2012, 19:26 | 3 |
выкинь из
PostQuitMessage(0); http://www.firststeps.ru/mfc/winapi/r.php?60 при WM_DESTROY: вызывается PostQuitMessage(0); которая вызовет WM_QUIT у тебя нет этого обработчика попадаем в ветку default где опять вызывается PostQuitMessage и опять WM_QUIT зациклились в return DefWindowProc(hWnd,message,wParam,lParam); не попадаем Добавлено через 4 минуты не он же убивает процесс Добавлено через 1 минуту вот еще http://www.transl-gunsmoker.ru... ssage.html
0
|
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 4
|
||||||
04.02.2012, 20:36 [ТС] | 4 | |||||
это я для проверки вставил, при перемещении окна успешно обрабатывается как раз dafault и WM_QUIT срабатывает, процесс умирает.
Вроде логику Вашего мышления понял, но всёравно запутался уже под конец... В общем пытаюсь просто методом тыка... Если отлавливать WM_CLOSE, то он срабатывает только допустим после перемещения окна, тоесть если жмакать по крестику ничего не происходит, но если сменить положение окна, т.е. вызвать default разок, то на сл. раз крестик срабатывается и приложение умирает правильно... странно...
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,696
|
||||||
04.02.2012, 20:49 | 5 | |||||
кто тебя так учил
если так то посылай в обработчике WM_DESTROY но проще и правильней
ты ссылки прочитал? там все описано что происходит при закрытии
0
|
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 4
|
|
04.02.2012, 20:52 [ТС] | 6 |
Обратите внимание, пожалуйста, на первый пост.
Там при использовании WM_DESTROY почему-то не убивается процесс. Это цель данной темы: понять почему же так происходит. Спасибо. Добавлено через 2 минуты Т.е. мне нужно в WndProc отловить WM_QUIT и послать его на основной цикл(WinMain)?
0
|
Заблокирован
|
|||||||||||
05.02.2012, 12:22 | 8 | ||||||||||
- как по мне нужно писать вот так
Вот так пробуй
- возможно ещё добавить DestroyWindow(hWnd); или же если DialogBox юзалась EndDialog А вообще лучше весь код выложы для анализа Добавлено через 5 минут А вообще вот так приблизительно строю WndProc
0
|
05.02.2012, 12:22 | |
05.02.2012, 12:22 | |
Помогаю со студенческими работами здесь
8
Не обрабатывается success Не обрабатывается $_POST Не обрабатывается MouseLeftButtonUp Не обрабатывается php Не обрабатывается исключение Не обрабатывается исключение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |