]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/statbr95.cpp
Removed an include from windres flags since it can't cope with a long command line
[wxWidgets.git] / src / msw / statbr95.cpp
index 2820bef97cbf9a625e2d280bada53ef263695f50..c3cf3960bf90027def653d071e09cc83c8bd3626 100644 (file)
@@ -109,8 +109,22 @@ bool wxStatusBar95::Create(wxWindow *parent,
     m_windowId = id == -1 ? NewControlId() : id;
 
     DWORD wstyle = WS_CHILD | WS_VISIBLE;
-    if ( style & wxST_SIZEGRIP )
+
+    // setting SBARS_SIZEGRIP is perfectly useless: it's always on by default
+    // (at least in the version of comctl32.dll I'm using), and the only way to
+    // turn it off is to use CCS_TOP style - as we position the status bar
+    // manually anyhow (see DoMoveWindow), use CCS_TOP style if wxST_SIZEGRIP
+    // is not given
+    if ( !(style & wxST_SIZEGRIP) )
+    {
+        wstyle |= CCS_TOP;
+    }
+    else
+    {
+        // may be some versions of comctl32.dll do need it - anyhow, it won't
+        // do any harm
         wstyle |= SBARS_SIZEGRIP;
+    }
 
     m_hWnd = (WXHWND)CreateStatusWindow(wstyle,
                                         wxEmptyString,
@@ -123,6 +137,8 @@ bool wxStatusBar95::Create(wxWindow *parent,
         return FALSE;
     }
 
+    SetFieldsCount(1);
+
     // we can't subclass this window as usual because the status bar window
     // proc processes WM_SIZE and WM_PAINT specially
     //  SubclassWin(m_hWnd);
@@ -301,10 +317,21 @@ bool wxStatusBar95::GetFieldRect(int i, wxRect& rect) const
 
 void wxStatusBar95::DoMoveWindow(int x, int y, int width, int height)
 {
-  FORWARD_WM_SIZE(GetHwnd(), SIZE_RESTORED, x, y, SendMessage);
-
-  // adjust fields widths to the new size
-  SetFieldsWidth();
+    // the status bar wnd proc must be forwarded the WM_SIZE message whenever
+    // the stat bar position/size is changed because it normally positions the
+    // control itself along bottom or top side of the parent window - failing
+    // to do so will result in nasty visual effects
+    FORWARD_WM_SIZE(GetHwnd(), SIZE_RESTORED, x, y, SendMessage);
+
+    // but now, when the standard status bar wnd proc did all it wanted to do,
+    // move the status bar to its correct location - usually this call may be
+    // omitted because for normal status bars (positioned along the bottom
+    // edge) the position is already set correctly, but if the user wants to
+    // position them in some exotic location, this is really needed
+    wxWindow::DoMoveWindow(x, y, width, height);
+
+    // adjust fields widths to the new size
+    SetFieldsWidth();
 }
 
 #endif // __WIN95__ && wxUSE_NATIVE_STATUSBAR