X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed4780ea6ecc34f6772375047869537d1fbc8d99..1239ac2e28ff365856aa19e7e775962d6ba4fc93:/src/msw/window.cpp diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 2bc19adc48..bb0520b14b 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1021,14 +1021,14 @@ void wxWindowMSW::UnsubclassWin() } } -void wxWindowMSW::AssociateHandle(WXWidget handle) +void wxWindowMSW::AssociateHandle(WXWidget handle) { if ( m_hWnd ) { if ( !::DestroyWindow(GetHwnd()) ) wxLogLastError(wxT("DestroyWindow")); } - + WXHWND wxhwnd = (WXHWND)handle; SetHWND(wxhwnd); @@ -1036,9 +1036,9 @@ void wxWindowMSW::AssociateHandle(WXWidget handle) } void wxWindowMSW::DissociateHandle() -{ +{ // this also calls SetHWND(0) for us - UnsubclassWin(); + UnsubclassWin(); } @@ -2285,31 +2285,7 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l #endif case WM_SIZE: - switch ( wParam ) - { - case SIZE_MAXHIDE: - case SIZE_MAXSHOW: - // we're not interested in these messages at all - break; - - case SIZE_MINIMIZED: - // we shouldn't send sizev events for these messages as the - // client size may be negative which breaks existing code - // - // OTOH we might send another (wxMinimizedEvent?) one or - // add an additional parameter to wxSizeEvent if this is - // useful to anybody - break; - - default: - wxFAIL_MSG( _T("unexpected WM_SIZE parameter") ); - // fall through nevertheless - - case SIZE_MAXIMIZED: - case SIZE_RESTORED: - processed = HandleSize(LOWORD(lParam), HIWORD(lParam), - wParam); - } + processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam); break; #if !defined(__WXWINCE__) @@ -3407,6 +3383,8 @@ bool wxWindowMSW::HandleCreate(WXLPCREATESTRUCT cs, bool *mayCreate) #ifndef __WXWINCE__ if ( ((CREATESTRUCT *)cs)->dwExStyle & WS_EX_CONTROLPARENT ) EnsureParentHasControlParentStyle(GetParent()); +#else + wxUnusedVar(cs); #endif // !__WXWINCE__ // TODO: should generate this event from WM_NCCREATE @@ -3747,9 +3725,7 @@ wxWindowMSW::MSWOnDrawItem(int WXUNUSED_UNLESS_ODRAWN(id), } bool -wxWindowMSW::MSWOnMeasureItem(int WXUNUSED_UNLESS_ODRAWN(id), - WXMEASUREITEMSTRUCT * - WXUNUSED_UNLESS_ODRAWN(itemStruct)) +wxWindowMSW::MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *itemStruct) { #if wxUSE_OWNER_DRAWN && wxUSE_MENUS_NATIVE // is it a menu item? @@ -3774,7 +3750,10 @@ wxWindowMSW::MSWOnMeasureItem(int WXUNUSED_UNLESS_ODRAWN(id), { return item->MSWOnMeasure(itemStruct); } -#endif // wxUSE_OWNER_DRAWN +#else + wxUnusedVar(id); + wxUnusedVar(itemStruct); +#endif // wxUSE_OWNER_DRAWN && wxUSE_MENUS_NATIVE return false; } @@ -4187,16 +4166,40 @@ bool wxWindowMSW::HandleMoving(wxRect& rect) return rc; } -bool wxWindowMSW::HandleSize(int WXUNUSED(w), int WXUNUSED(h), - WXUINT WXUNUSED(flag)) +bool wxWindowMSW::HandleSize(int WXUNUSED(w), int WXUNUSED(h), WXUINT wParam) { - // don't use w and h parameters as they specify the client size while - // according to the docs EVT_SIZE handler is supposed to receive the total - // size - wxSizeEvent event(GetSize(), m_windowId); - event.SetEventObject(this); + bool processed = false; - return GetEventHandler()->ProcessEvent(event); + switch ( wParam ) + { + default: + wxFAIL_MSG( _T("unexpected WM_SIZE parameter") ); + // fall through nevertheless + + case SIZE_MAXHIDE: + case SIZE_MAXSHOW: + // we're not interested in these messages at all + break; + + case SIZE_MINIMIZED: + processed = HandleMinimize(); + break; + + case SIZE_MAXIMIZED: + /* processed = */ HandleMaximize(); + // fall through to send a normal size event as well + + case SIZE_RESTORED: + // don't use w and h parameters as they specify the client size + // while according to the docs EVT_SIZE handler is supposed to + // receive the total size + wxSizeEvent event(GetSize(), m_windowId); + event.SetEventObject(this); + + processed = GetEventHandler()->ProcessEvent(event); + } + + return processed; } bool wxWindowMSW::HandleSizing(wxRect& rect) @@ -4720,7 +4723,7 @@ int wxWindowMSW::HandleMenuChar(int chAccel, WXLPARAM lParam) // FIXME-UNICODE: this comparison doesn't risk to work // for non ASCII accelerator characters I'm afraid, but // what can we do? - if ( wxToupper(*p) == chAccel ) + if ( wxToupper(*p) == (wchar_t)chAccel ) { return i; } @@ -5135,7 +5138,7 @@ int wxCharCodeWXToMSW(int id, bool *isVirtual) return keySym; } -bool wxGetKeyState(wxKeyCode key) +bool wxGetKeyState(const wxKeyCode& key) { bool bVirtual; int vkey = wxCharCodeWXToMSW(key, &bVirtual);