Как запретить MessageBox`ы с сообщениями об ошибках
От: Alex_Avr Россия  
Дата: 11.12.07 14:31
Оценка: 39 (2) +1
#Имя: FAQ.SetErrorMode
Здравствуйте, Вы писали:

S>Использую буст в своих проектах,

S>когда происходит вылет скажем в boost::to_lower, или в других функциях буста,
S>вылетает MessageBox, как можно убрать его?

http://files.rsdn.org/82/runtimeerrmsgbox.gif

S>т.е. если вылет произошел то прога падала а не давала MessageBox`ы


Хороший вопрос! Под Windows такого рода окошки могут возникать по разным причинам — срабатываение assert, необработанное исключение, access violations и др.
Соответственно, AFAIK не существует способа просто установить некий флаг, чтобы все такого рода сообщения подавлялись.

Советую посмотреть следующие функции:

Windows API:

SetErrorMode
SetUnhandledExceptionFilter

Возможно, полезными окажутся и другие Error Handling Functions, Structured Exception Handling Functions

CRT:

(С++)
set_unexpected
set_terminate

(Microsoft specific)
_CrtSetReportMode
_CrtDbgReport
и другие Debug Routines

Недавно я узнал, что начиная с MSVC 2005 (8.0) в связи с новой политикой безопасности возникающие сообщения об ошибках легальными методами нельзя будет запретить полностью.
С уважением, Александр Авраменко.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.