From d26e1ab2061fa549653c7b7e5f3ae04f7fa2e003 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Wed, 28 Jul 2004 09:34:25 +0000 Subject: [PATCH] Worked around static box opaqueness problem on WinCE by setting the z-order in OnInitDialog git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/window.h | 1 + src/msw/radiobox.cpp | 4 +--- src/msw/window.cpp | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index f244a5f915..072c9d9651 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -163,6 +163,7 @@ public: void OnEraseBackground(wxEraseEvent& event); void OnPaint(wxPaintEvent& event); + void OnInitDialog( wxInitDialogEvent& event ); public: // For implementation purposes - sometimes decorations make the client area diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp index 53b5d44715..524027ecf9 100644 --- a/src/msw/radiobox.cpp +++ b/src/msw/radiobox.cpp @@ -347,9 +347,7 @@ bool wxRadioBox::Create(wxWindow *parent, #ifdef __WXWINCE__ // Set the z-order correctly - RECT rect; - GetWindowRect(GetHwnd(), & rect); - SetWindowPos(GetHwnd(), HWND_BOTTOM, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, 0); + SetWindowPos(GetHwnd(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); #endif SetSelection(0); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 222138a21c..119a50c4a8 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -5892,3 +5892,36 @@ IMPLEMENT_DYNAMIC_CLASS(wxIdleWakeUpModule, wxModule) #endif // __WXWINCE__ +#ifdef __WXWINCE__ + +#if wxUSE_STATBOX +static void wxAdjustZOrder(wxWindow* parent) +{ + if (parent->IsKindOf(CLASSINFO(wxStaticBox))) + { + // Set the z-order correctly + SetWindowPos((HWND) parent->GetHWND(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); + } + + wxWindowList::compatibility_iterator current = parent->GetChildren().GetFirst(); + while (current) + { + wxWindow *childWin = current->GetData(); + wxAdjustZOrder(childWin); + current = current->GetNext(); + } +} +#endif + +// We need to adjust the z-order of static boxes in WinCE, to +// make 'contained' controls visible +void wxWindowMSW::OnInitDialog( wxInitDialogEvent& event ) +{ +#if wxUSE_STATBOX + wxAdjustZOrder(this); +#endif + + event.Skip(); +} +#endif + -- 2.45.2