There were times when AfxMessageBox freezes my background process thread (socket communication, etc.) Here’s what I wrote as a quick and dirty solution. Put it in your StdAfx.h
You can refine it if you like.
//////////////////////////////////////////////////////////////////////////
// ivo setyadi [12/10/2008 Development]
// a simple (or semi) modeless AfxMessageBox using MFC thread
// usage:
// CMy my;
// my.ModelessBox("your message");
class CMy
{
public:
void ModelessBox( CString str)
{
char *buffer=new char[256];
lstrcpy(buffer,str);
AfxBeginThread(showMessage, (LPVOID *) buffer, THREAD_PRIORITY_NORMAL) ;
}
static UINT showMessage(LPVOID lParam)
{
if(lParam == NULL)
AfxEndThread(NULL);
char *pStr = (char *) lParam;
AfxMessageBox(pStr);
delete pStr; // don't forget
return TRUE;
}
};
There.
The very year, 2008.