Run App only once
 
I want my app open only once. If a user opens a second instance I would like
to AfxMessageBox the user and make the original instance 'flash', then close
the second instance.
I have tried calling the following code in my App::InitInstance() - check if
this is the first instance and if it is, then register app, but it doesn't
work:
bool CCircaApp::FirstInstance()
{
 CWnd* pWndMainFrm = (CMainFrame*) CWnd::FindWindow(_T("Circa_Main"), NULL);
 // Determine if another window with your class name exists (not this one
though!)...
 if ((pWndMainFrm != NULL) && (pWndMainFrm != GetMainWnd()))
 {
  CWnd* pWndChild = pWndMainFrm->GetLastActivePopup();
  AfxMessageBox("Another instance of Circa is already open");
  // Can't just bring the main window back because it doesn't
  // restore any tools that are also minimised, so just flash the
  // toolbar, so the user finds it again.
  pWndChild->FlashWindow(TRUE);
  // and you are done activating the previous one.
  return false;
 }
 // First instance. Proceed as normal.
 else
  return true;
}
bool CCircaApp::RegisterApp()
{
 // Register your unique class name that you wish to use
 WNDCLASS wndcls;
 memset(&wndcls, 0, sizeof(WNDCLASS)); // start with NULL defaults
 wndcls.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
 wndcls.lpfnWndProc = ::DefWindowProc;
 wndcls.hInstance = AfxGetInstanceHandle();
 wndcls.hIcon = LoadIcon(IDR_MAINFRAME); // or load a different icon
 wndcls.hCursor = LoadCursor( IDC_ARROW );
 wndcls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
 wndcls.lpszMenuName = NULL;
 // Specify your own class name for using FindWindow later
 wndcls.lpszClassName = _T("Circa_Main");
 // Register the new class and exit if it fails
 if(!AfxRegisterClass(&wndcls))
 {
  TRACE("Class Registration Failed\n");
  return false;
 }
 return true;
}