X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1fdf858b87878bb6c52c06547a199ce9d9ab2b87..6d41981d894198a4de266d399f0f5cd141f97df6:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index e9772cc34a..54c791ddad 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -60,6 +60,7 @@ #if wxUSE_ACCESSIBILITY #include "wx/access.h" + #include #include #ifndef WM_GETOBJECT #define WM_GETOBJECT 0x003D @@ -103,14 +104,16 @@ #include #endif -#if (!defined(__GNUWIN32_OLD__) && !defined(__TWIN32__) && !defined(__WXMICROWIN__)) || defined(__CYGWIN10__) +#if (!defined(__GNUWIN32_OLD__) && !defined(__WXMICROWIN__)) || defined(__CYGWIN10__) #ifdef __WIN95__ #include #endif #elif !defined(__WXMICROWIN__) // broken compiler - #ifndef __TWIN32__ - #include "wx/msw/gnuwin32/extra.h" - #endif + #include "wx/msw/gnuwin32/extra.h" +#endif + +#if defined(__GNUG__) +#include "wx/msw/missing.h" #endif // ---------------------------------------------------------------------------- @@ -214,15 +217,13 @@ static inline void wxBringWindowToTop(HWND hwnd) // activate (set focus to) specified window ::SetFocus(hwnd); +#endif // raise top level parent to top of z order - ::SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); -#else // !__WXMICROWIN__ - if ( !::BringWindowToTop(hwnd) ) + if (!::SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)) { - wxLogLastError(_T("BringWindowToTop")); + wxLogLastError(_T("SetWindowPos")); } -#endif // __WXMICROWIN__/!__WXMICROWIN__ } // --------------------------------------------------------------------------- @@ -1035,6 +1036,7 @@ WXDWORD wxWindowMSW::MSWGetStyle(long flags, WXDWORD *exstyle) const // Windows XP. Instead we get the appropriate style for the theme. if (border == wxBORDER_DEFAULT && wxTheApp->GetAuto3D() && + IsKindOf(CLASSINFO(wxControl)) && GetParent() && (GetParent()->IsKindOf(CLASSINFO(wxPanel)) || GetParent()->IsKindOf(CLASSINFO(wxDialog))) && ((GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS) != wxUSER_COLOURS)) @@ -2184,6 +2186,24 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam processed = HandleMove(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); break; + case WM_MOVING: + { + LPRECT pRect = (LPRECT)lParam; + wxRect rc; + rc.SetLeft(pRect->left); + rc.SetTop(pRect->top); + rc.SetRight(pRect->right); + rc.SetBottom(pRect->bottom); + processed = HandleMoving(rc); + if (processed) { + pRect->left = rc.GetLeft(); + pRect->top = rc.GetTop(); + pRect->right = rc.GetRight(); + pRect->bottom = rc.GetBottom(); + } + } + break; + case WM_SIZE: switch ( wParam ) { @@ -2212,6 +2232,24 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam } break; + case WM_SIZING: + { + LPRECT pRect = (LPRECT)lParam; + wxRect rc; + rc.SetLeft(pRect->left); + rc.SetTop(pRect->top); + rc.SetRight(pRect->right); + rc.SetBottom(pRect->bottom); + processed = HandleSizing(rc); + if (processed) { + pRect->left = rc.GetLeft(); + pRect->top = rc.GetTop(); + pRect->right = rc.GetRight(); + pRect->bottom = rc.GetBottom(); + } + } + break; + #ifndef __WXMICROWIN__ case WM_ACTIVATEAPP: wxTheApp->SetActive(wParam != 0, FindFocus()); @@ -3393,16 +3431,21 @@ bool wxWindowMSW::MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *itemStruct) } #endif // wxUSE_MENUS_NATIVE +#endif // USE_OWNER_DRAWN + #if wxUSE_CONTROLS + wxWindow *item = FindItem(id); +#if wxUSE_OWNER_DRAWN if ( item && item->IsKindOf(CLASSINFO(wxControl)) ) - { return ((wxControl *)item)->MSWOnDraw(itemStruct); - } -#endif // wxUSE_CONTROLS - +#else + if ( item && item->IsKindOf(CLASSINFO(wxButton)) ) + return ((wxButton *)item)->MSWOnDraw(itemStruct); #endif // USE_OWNER_DRAWN +#endif // wxUSE_CONTROLS + return FALSE; } @@ -3814,6 +3857,17 @@ bool wxWindowMSW::HandleMove(int x, int y) return GetEventHandler()->ProcessEvent(event); } +bool wxWindowMSW::HandleMoving(wxRect& rect) +{ + wxMoveEvent event(rect, m_windowId); + event.SetEventObject(this); + + bool rc = GetEventHandler()->ProcessEvent(event); + if (rc) + rect = event.GetRect(); + return rc; +} + bool wxWindowMSW::HandleSize(int WXUNUSED(w), int WXUNUSED(h), WXUINT WXUNUSED(flag)) { @@ -3826,6 +3880,17 @@ bool wxWindowMSW::HandleSize(int WXUNUSED(w), int WXUNUSED(h), return GetEventHandler()->ProcessEvent(event); } +bool wxWindowMSW::HandleSizing(wxRect& rect) +{ + wxSizeEvent event(rect, m_windowId); + event.SetEventObject(this); + + bool rc = GetEventHandler()->ProcessEvent(event); + if (rc) + rect = event.GetRect(); + return rc; +} + bool wxWindowMSW::HandleGetMinMaxInfo(void *mmInfo) { MINMAXINFO *info = (MINMAXINFO *)mmInfo; @@ -4823,7 +4888,7 @@ void wxSetKeyboardHook(bool doIt) wxTheKeyboardHookProc = MakeProcInstance((FARPROC) wxKeyboardHook, wxGetInstance()); wxTheKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) wxTheKeyboardHookProc, wxGetInstance(), -#if defined(__WIN32__) && !defined(__TWIN32__) +#if defined(__WIN32__) GetCurrentThreadId() // (DWORD)GetCurrentProcess()); // This is another possibility. Which is right? #else