Browse Source

ENH: use callback not ifdef for MFC message box errors

Bill Hoffman 24 years ago
parent
commit
b0e3a2def0

+ 2 - 2
Source/FLTKDialog/CMakeSetupGUIImplementation.cxx

@@ -17,9 +17,9 @@ void FLTKMessageCallback(const char* message, const char* title, bool& nomore)
   int ok = 
     fl_ask(message, "Press cancel to suppress any further messages.");
   if(!ok)
-  {
+    {
     nomore = true;
-  }
+    }
 }
 
 /**

+ 12 - 0
Source/MFCDialog/CMakeSetupDialog.cpp

@@ -61,6 +61,17 @@ BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
   END_MESSAGE_MAP();
 
 
+void MFCMessageCallback(const char* m, const char* title, bool& nomore)
+{ 
+  std::string message = m;
+  message += "\n\n(Press  Cancel to suppress any further messages.)";
+  if(::MessageBox(0, message.c_str(), title, 
+                  MB_OKCANCEL) == IDCANCEL)
+    {
+    nomore = true;
+    }
+}
+
 /////////////////////////////////////////////////////////////////////////////
 // CMakeSetupDialog dialog
 
@@ -68,6 +79,7 @@ CMakeSetupDialog::CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo,
                                    CWnd* pParent /*=NULL*/)
   : CDialog(CMakeSetupDialog::IDD, pParent)
 {
+   cmSystemTools::SetErrorCallback(MFCMessageCallback);
   m_RegistryKey  = "Software\\Kitware\\CMakeSetup\\Settings\\StartPath";
   
   //{{AFX_DATA_INIT(CMakeSetupDialog)

+ 3 - 8
Source/cmSystemTools.cxx

@@ -709,16 +709,11 @@ void cmSystemTools::Message(const char* m1, const char *title)
     (*s_ErrorCallback)(m1, title, disableMessages);
     return;
     }
-#if defined(_WIN32) && !defined(__CYGWIN__)
-  std::string message = m1;
-  message += "\n\n(Press  Cancel to suppress any further messages.)";
-  if(::MessageBox(0, message.c_str(), title, 
-                  MB_OKCANCEL) == IDCANCEL)
+  else
     {
-    disableMessages = true;
+    std::cerr << m1 << std::endl;
     }
-#endif
-  std::cerr << m1 << std::endl;
+  
 }