X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d8d4b669a311a8b0c64939e82fc4d5bb6c36796..78e18e8d531520da97daa326f014c03b04db534f:/src/msw/toplevel.cpp diff --git a/src/msw/toplevel.cpp b/src/msw/toplevel.cpp index 495b865e52..8378923a5c 100644 --- a/src/msw/toplevel.cpp +++ b/src/msw/toplevel.cpp @@ -33,6 +33,7 @@ #include "wx/log.h" #include "wx/intl.h" #include "wx/frame.h" + #include "wx/menu.h" #include "wx/containr.h" // wxSetFocusToChild() #include "wx/module.h" #endif //WX_PRECOMP @@ -360,6 +361,10 @@ WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WX #endif // __SMARTPHONE__ || __POCKETPC__ case WM_SYSCOMMAND: + // Keep the #ifdef block inside the case to fix a potential MSVC + // warning regarding switch statement containing no case or + // default labels (or a default only). +#ifndef __WXUNIVERSAL__ // We may need to generate events for the items added to the system // menu if it had been created (and presumably modified). if ( m_menuSystem ) @@ -381,6 +386,7 @@ WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WX processed = true; } } +#endif // #ifndef __WXUNIVERSAL__ break; } @@ -439,6 +445,13 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, } #endif // !__WXWINCE__ + if ( !title.empty() ) + { + ::SetWindowText(GetHwnd(), title.wx_str()); + } + + SubclassWin(m_hWnd); + #if !defined(__WXWINCE__) || defined(__WINCE_STANDARDSDK__) // move the dialog to its initial position without forcing repainting int x, y, w, h; @@ -460,13 +473,6 @@ bool wxTopLevelWindowMSW::CreateDialog(const void *dlgTemplate, } #endif // !__WXWINCE__ - if ( !title.empty() ) - { - ::SetWindowText(GetHwnd(), title.wx_str()); - } - - SubclassWin(m_hWnd); - #ifdef __SMARTPHONE__ // Work around title non-display glitch Show(false); @@ -637,7 +643,13 @@ void wxTopLevelWindowMSW::DoShowWindow(int nShowCmd) { ::ShowWindow(GetHwnd(), nShowCmd); - m_iconized = nShowCmd == SW_MINIMIZE; + // Hiding the window doesn't change its iconized state. + if ( nShowCmd != SW_HIDE ) + { + // Otherwise restoring, maximizing or showing the window normally also + // makes it not iconized and only minimizing it does make it iconized. + m_iconized = nShowCmd == SW_MINIMIZE; + } } void wxTopLevelWindowMSW::ShowWithoutActivating() @@ -1158,54 +1170,6 @@ bool wxTopLevelWindowMSW::EnableCloseButton(bool enable) return true; } -#ifndef __WXWINCE__ - -bool wxTopLevelWindowMSW::SetShape(const wxRegion& region) -{ - wxCHECK_MSG( HasFlag(wxFRAME_SHAPED), false, - wxT("Shaped windows must be created with the wxFRAME_SHAPED style.")); - - // The empty region signifies that the shape should be removed from the - // window. - if ( region.IsEmpty() ) - { - if (::SetWindowRgn(GetHwnd(), NULL, TRUE) == 0) - { - wxLogLastError(wxT("SetWindowRgn")); - return false; - } - return true; - } - - // Windows takes ownership of the region, so - // we'll have to make a copy of the region to give to it. - DWORD noBytes = ::GetRegionData(GetHrgnOf(region), 0, NULL); - RGNDATA *rgnData = (RGNDATA*) new char[noBytes]; - ::GetRegionData(GetHrgnOf(region), noBytes, rgnData); - HRGN hrgn = ::ExtCreateRegion(NULL, noBytes, rgnData); - delete[] (char*) rgnData; - - // SetWindowRgn expects the region to be in coordinants - // relative to the window, not the client area. Figure - // out the offset, if any. - RECT rect; - DWORD dwStyle = ::GetWindowLong(GetHwnd(), GWL_STYLE); - DWORD dwExStyle = ::GetWindowLong(GetHwnd(), GWL_EXSTYLE); - ::GetClientRect(GetHwnd(), &rect); - ::AdjustWindowRectEx(&rect, dwStyle, ::GetMenu(GetHwnd()) != NULL, dwExStyle); - ::OffsetRgn(hrgn, -rect.left, -rect.top); - - // Now call the shape API with the new region. - if (::SetWindowRgn(GetHwnd(), hrgn, TRUE) == 0) - { - wxLogLastError(wxT("SetWindowRgn")); - return false; - } - return true; -} - -#endif // !__WXWINCE__ - void wxTopLevelWindowMSW::RequestUserAttention(int flags) { // check if we can use FlashWindowEx(): unfortunately a simple test for @@ -1257,6 +1221,7 @@ void wxTopLevelWindowMSW::RequestUserAttention(int flags) wxMenu *wxTopLevelWindowMSW::MSWGetSystemMenu() const { +#ifndef __WXUNIVERSAL__ if ( !m_menuSystem ) { HMENU hmenu = ::GetSystemMenu(GetHwnd(), FALSE); @@ -1282,6 +1247,7 @@ wxMenu *wxTopLevelWindowMSW::MSWGetSystemMenu() const // correct but doesn't seem to have any serious drawbacks. m_menuSystem->SetInvokingWindow(self); } +#endif // #ifndef __WXUNIVERSAL__ return m_menuSystem; }