У меня есть проект Visual Studio 2008 C ++ для Windows Mobile 6.5, в котором я хотел бы перехватывать исключения SEH, записывать их в файл и предоставлять пользователю конкретные инструкции по регистрации отчета о дефектах для этой проблемы. Мой код выглядит примерно так:
static int WriteDump( struct _EXCEPTION_POINTERS* ep )
{
// code to write info to a file
return EXCEPTION_EXECUTE_HANDLER;
}
int WINAPI _tWinMain( HINSTANCE hInstance,
HINSTANCE /*hPrevInstance*/,
LPTSTR lpstrCmdLine,
int nCmdShow )
{
int result = 0;
__try
{
result = StartMyGuiApp( hInstance, lpstrCmdLine, nCmdShow );
}
__except( WriteDump( GetExceptionInformation() ) )
{
// empty
}
return 0;
}
Это прекрасно работает, если исключение SEH выдается из основного потока. Но если в коде GUI есть исключение (например, обработчик WM_CREATE), то появляется обычное диалоговое окно «Извините ...», и мой код обработки ошибок никогда не выполняется.
Что я могу сделать, чтобы зафиксировать эти исключения? В C # .NET CF я бы подписался на Application.ThreadException
и Application.CurrentDomain.UnhandledException
. за это. Есть ли эквивалент C ++?
Спасибо,
PaulH