]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/statbr95.cpp
attempt to fix crash in tree ctrl
[wxWidgets.git] / src / msw / statbr95.cpp
index c3cf3960bf90027def653d071e09cc83c8bd3626..4843ea05a67650e535da4baa2bd10113aae199ad 100644 (file)
@@ -69,10 +69,24 @@ LRESULT APIENTRY wxStatusBarProc(HWND hwnd,
                                  WPARAM wParam,
                                  LPARAM lParam)
 {
                                  WPARAM wParam,
                                  LPARAM lParam)
 {
-    if ( message == WM_COMMAND )
-    {
-        wxStatusBar95 *sb = (wxStatusBar95 *)GetWindowLong(hwnd, GWL_USERDATA);
-        sb->MSWWindowProc(message, wParam, lParam);
+    switch (message) {
+        case WM_COMMAND:
+        case WM_DRAWITEM:
+        case WM_MEASUREITEM:
+        case WM_SIZE:
+        case WM_MOVE:
+        case WM_MOUSEMOVE:
+        case WM_LBUTTONUP:
+        case WM_LBUTTONDBLCLK:
+        case WM_RBUTTONDOWN:
+        case WM_RBUTTONUP:
+        case WM_RBUTTONDBLCLK:
+        case WM_MBUTTONDOWN:
+        case WM_MBUTTONUP:
+        case WM_MBUTTONDBLCLK:
+            wxStatusBar95 *sb = (wxStatusBar95 *)GetWindowLong(hwnd, GWL_USERDATA);
+            sb->MSWWindowProc(message, wParam, lParam);
+            break;
     }
 
     return ::CallWindowProc(CASTWNDPROC gs_wndprocStatBar, hwnd, message, wParam, lParam);
     }
 
     return ::CallWindowProc(CASTWNDPROC gs_wndprocStatBar, hwnd, message, wParam, lParam);
@@ -108,7 +122,7 @@ bool wxStatusBar95::Create(wxWindow *parent,
 
     m_windowId = id == -1 ? NewControlId() : id;
 
 
     m_windowId = id == -1 ? NewControlId() : id;
 
-    DWORD wstyle = WS_CHILD | WS_VISIBLE;
+    DWORD wstyle = WS_CHILD | WS_VISIBLE /* | WS_CLIPSIBLINGS */ ;
 
     // 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
 
     // 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
@@ -174,21 +188,21 @@ void wxStatusBar95::CopyFieldsWidth(const int widths[])
 
 void wxStatusBar95::SetFieldsCount(int nFields, const int *widths)
 {
 
 void wxStatusBar95::SetFieldsCount(int nFields, const int *widths)
 {
-  // this is Windows limitation
-  wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") );
+    // this is a Windows limitation
+    wxASSERT_MSG( (nFields > 0) && (nFields < 255), _T("too many fields") );
 
 
-  m_nFields = nFields;
+    m_nFields = nFields;
 
 
-  CopyFieldsWidth(widths);
-  SetFieldsWidth();
+    CopyFieldsWidth(widths);
+    SetFieldsWidth();
 }
 
 void wxStatusBar95::SetStatusWidths(int n, const int widths[])
 {
 }
 
 void wxStatusBar95::SetStatusWidths(int n, const int widths[])
 {
-  wxASSERT_MSG( n == m_nFields, _T("field number mismatch") );
+    wxASSERT_MSG( n == m_nFields, _T("field number mismatch") );
 
 
-  CopyFieldsWidth(widths);
-  SetFieldsWidth();
+    CopyFieldsWidth(widths);
+    SetFieldsWidth();
 }
 
 void wxStatusBar95::SetFieldsWidth()
 }
 
 void wxStatusBar95::SetFieldsWidth()
@@ -307,7 +321,7 @@ bool wxStatusBar95::GetFieldRect(int i, wxRect& rect) const
     RECT r;
     if ( !::SendMessage(GetHwnd(), SB_GETRECT, i, (LPARAM)&r) )
     {
     RECT r;
     if ( !::SendMessage(GetHwnd(), SB_GETRECT, i, (LPARAM)&r) )
     {
-        wxLogLastError("SendMessage(SB_GETRECT)");
+        wxLogLastError(wxT("SendMessage(SB_GETRECT)"));
     }
 
     wxCopyRECTToRect(r, rect);
     }
 
     wxCopyRECTToRect(r, rect);