При попытке выяснить, почему приложение, над которым я работаю, не закрывается, я понял, что он выбрал исключение в своем обработчике WM_CLOSE
. Однако вместо сбоя приложения (как и должно быть) исключение игнорируется.
Чтобы убедиться, что ничего не происходит, я создал новое приложение С++ Win32 в Visual Studio и добавил следующее:
case WM_CLOSE:
(*(int*)NULL) = 0;
break;
То же самое: без сбоев, только исключение первого шанса в журнале отладки. Если я добавлю тот же код в обработчик WM_COMMAND
, он сработает, как ожидалось.
Итак, мне любопытно: что такого особенного в WM_CLOSE
, что Windows считает, что выбрасываемые им исключения должны быть проглочены?
(Кстати: это на Windows 7 x64, запущена программа x86)