]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
fixed event processing for the target window
[wxWidgets.git] / src / msw / window.cpp
index 775c7bb684ad804ebfed1930654cf9379c3d92ae..02ba75ec1015d9baa1e7b44a3f318761e878fd0f 100644 (file)
@@ -1233,7 +1233,9 @@ void wxWindowMSW::Clear()
 
 static inline void SendSetRedraw(HWND hwnd, bool on)
 {
+#ifndef __WXMICROWIN__
     ::SendMessage(hwnd, WM_SETREDRAW, (WPARAM)on, 0);
+#endif
 }
 
 void wxWindowMSW::Freeze()
@@ -3534,17 +3536,19 @@ bool wxWindowMSW::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
 #endif // wxUSE_MENUS_NATIVE
 
     wxWindow *win = NULL;
-    if ( cmd == 0 || cmd == 1 ) // menu or accel - use id
+
+    // first try to find it from HWND - this works even with the broken
+    // programs using the same ids for different controls
+    if ( control )
     {
-        // must cast to a signed type before comparing with other ids!
-        win = FindItem((signed short)id);
+        win = wxFindWinFromHandle(control);
     }
 
-    if ( !win && control )
+    // try the id
+    if ( !win )
     {
-        // find it from HWND - this works even with the broken programs using
-        // the same ids for different controls
-        win = wxFindWinFromHandle(control);
+        // must cast to a signed type before comparing with other ids!
+        win = FindItem((signed short)id);
     }
 
     if ( win )
@@ -4288,11 +4292,13 @@ extern wxWindow *wxGetWindowFromHWND(WXHWND hWnd)
         // FIXME: this is clearly not the best way to do it but I think we'll
         //        need to change HWND <-> wxWindow code more heavily than I can
         //        do it now to fix it
+#ifndef __WXMICROWIN__
         if ( ::GetWindow(hwnd, GW_OWNER) )
         {
             // it's a dialog box, don't go upwards
             break;
         }
+#endif
 
         hwnd = ::GetParent(hwnd);
         win = wxFindWinFromHandle((WXHWND)hwnd);