]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utilsexc.cpp
Eliminated bizarre VC++ internal compiler errors, perhaps related to
[wxWidgets.git] / src / msw / utilsexc.cpp
index e1e0d9dc989341829f5f633a68df2497b4aba801..7046329ee5a42f54e3b9692c9548d589d7d99d08 100644 (file)
@@ -17,7 +17,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation
 #endif
 
@@ -463,22 +463,24 @@ static bool wxExecuteDDE(const wxString& ddeServer,
     }
     else // connected to DDE server
     {
-        // the added complication here is that although most
-        // programs use XTYP_EXECUTE for their DDE API, some
-        // important ones - like IE and other MS stuff - use
-        // XTYP_REQUEST!
+        // the added complication here is that although most programs use
+        // XTYP_EXECUTE for their DDE API, some important ones -- like Word
+        // and other MS stuff - use XTYP_REQUEST!
         //
-        // so we try one first and then the other one if it
-        // failed
+        // moreover, anotheri mportant program (IE) understands both but
+        // returns an error from Execute() so we must try Request() first
+        // to avoid doing it twice
         {
+            // we're prepared for this one to fail, so don't show errors
             wxLogNull noErrors;
-            ok = conn->Execute(ddeCommand);
+
+            ok = conn->Request(ddeCommand) != NULL;
         }
 
         if ( !ok )
         {
-            // now try request - but show the errors
-            ok = conn->Request(ddeCommand) != NULL;
+            // now try execute -- but show the errors
+            ok = conn->Execute(ddeCommand);
         }
     }
 
@@ -850,6 +852,12 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler)
                 // ok, process ready to accept DDE requests
                 ok = wxExecuteDDE(ddeServer, ddeTopic, ddeCommand);
         }
+
+        if ( !ok )
+        {
+            wxLogDebug(_T("Failed to send DDE request to the process \"%s\"."),
+                       cmd.c_str());
+        }
     }
 #endif // wxUSE_IPC