]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/utilsexc.cpp
we do want arrows even in a read only text ctrl
[wxWidgets.git] / src / msw / utilsexc.cpp
index c71ce01c5548755465f476237aa334a033269309..58b26f2c07d29002db2f71e2bff58235f6a86b1c 100644 (file)
@@ -33,7 +33,9 @@
     #include "wx/app.h"
     #include "wx/intl.h"
     #include "wx/log.h"
-    #include "wx/frame.h"
+    #if wxUSE_GUI // See 'dirty hack' below.
+        #include "wx/frame.h"
+    #endif
 #endif
 
 #ifdef __WIN32__
@@ -260,7 +262,7 @@ private:
 // thread function for the thread monitoring the process termination
 static DWORD __stdcall wxExecuteThread(void *arg)
 {
-    wxExecuteData *data = (wxExecuteData*)arg;
+    wxExecuteData * const data = (wxExecuteData *)arg;
 
     if ( ::WaitForSingleObject(data->hProcess, INFINITE) != WAIT_OBJECT_0 )
     {
@@ -291,7 +293,7 @@ LRESULT APIENTRY _EXPORT wxExecuteWindowCbk(HWND hWnd, UINT message,
     {
         DestroyWindow(hWnd);    // we don't need it any more
 
-        wxExecuteData *data = (wxExecuteData *)lParam;
+        wxExecuteData * const data = (wxExecuteData *)lParam;
         if ( data->handler )
         {
             data->handler->OnTerminate((int)data->dwProcessId,
@@ -314,7 +316,7 @@ LRESULT APIENTRY _EXPORT wxExecuteWindowCbk(HWND hWnd, UINT message,
     }
     else
     {
-        return DefWindowProc(hWnd, message, wParam, lParam);
+        return ::DefWindowProc(hWnd, message, wParam, lParam);
     }
 }
 
@@ -897,8 +899,15 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler)
             // real async IO which we don't have for the moment
             ::Sleep(50);
 
+#if wxUSE_GUI
             // repaint the GUI
             wxYield();
+#else // !GUI
+            // dispatch the messages to the hidden window so that it could
+            // process the wxWM_PROC_TERMINATED notification
+            MSG msg;
+            ::PeekMessage(&msg, hwnd, 0, 0, PM_REMOVE);
+#endif // GUI/!GUI
         }
 
 #if wxUSE_GUI