Okay, so did you trace through it in the debugger? What strings are actually
The code in my original message is just a pseudo code.
The CMyException class is not derived from MFC's CException. It is our
in-house non-mfc class that is used extensively in other non-mfc
projects. Sorry for the confusion.
Please note that a call to ::MessageBox() with constant strings (i.e.
ignoring exception object entirely) exhibits the same behaviour at the
point.
thx.
"Jonathan Wood" <jwood@softcircuits.com> wrote in message
news:OWdeANN5HHA.1148@TK2MSFTNGP05.phx.gbl...
CException::GetErrorMessage() returns BOOL so that would cause serious
problems and I can't imagine how that could ever compile without errors.
I'm sure ::MessageBox() isn't too crazy about NULL either. You need to
pass a valid string argument, and it would be nice if it compiles too.
My catch blocks look like this:
e->ReportError();
e->Delete();
Nice and simple.
--
Jonathan Wood
SoftCircuits Programming
http://www.softcircuits.com
"Bogdan" <nouser@nodomain.com> wrote in message
news:uInxuGN5HHA.3916@TK2MSFTNGP02.phx.gbl...
Hi,
This is a pseudo code from InitInstance() of my dialog based app:
if (cmdInfo.m_strAppName.IsEmpty()) {
AfxMessageBox(IDS_SYNTAX, MB_OK | MB_ICONSTOP); // <= works fine!
return FALSE;
}
try {
/* ... */
CMyDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK) {
/* ... */ // might throw CMyException
} else if (nResponse == IDCANCEL) {
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
} catch (CMyException& e) {
// Neither of the calls below will display the box
//nResponse = AfxMessageBox(e.GetErrorMessage(), MB_OK |
MB_ICONSTOP);
nResponse = ::MessageBox(NULL, L"Text", L"Caption", MB_OK |
MB_ICONSTOP);
}
The problem is that whenever exception is thrown I could hear a beep but
the message box is not displayed. Both Afx.. and Win API functions
return immediately with ret code set to 1 (IDOK).
Could someone please give me some idea what might be causing that
behaviour?
Thanks,
Bogdan