X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bae411099c6c5c0c8c082516604fe80112699cef..2cc78389312dce6285d0d6b6e891d24372252ada:/src/msw/statbr95.cpp diff --git a/src/msw/statbr95.cpp b/src/msw/statbr95.cpp index 20df26db30..df3eacee72 100644 --- a/src/msw/statbr95.cpp +++ b/src/msw/statbr95.cpp @@ -36,7 +36,7 @@ #include "wx/msw/private.h" #include -#if !(defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) +#if defined(__WIN95__) && !((defined(__GNUWIN32_OLD__) || defined(__TWIN32__)) && !defined(__CYGWIN10__)) #include #endif @@ -57,40 +57,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxStatusBar95) #define StatusBar_GetTextLen(h, n) LOWORD(SendMessage(h, SB_GETTEXTLENGTH, (WPARAM)n, 0)) #define StatusBar_GetText(h, n, s) LOWORD(SendMessage(h, SB_GETTEXT, (WPARAM)n, (LPARAM)(LPTSTR)s)) -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- - -// static WNDPROC gs_wndprocStatBar = NULL; -static WXFARPROC gs_wndprocStatBar = (WXFARPROC) NULL; - -LRESULT APIENTRY wxStatusBarProc(HWND hwnd, - UINT message, - WPARAM wParam, - LPARAM lParam) -{ - switch (message) { - case WM_COMMAND: - case WM_SIZE: - case WM_MOVE: - case WM_MOUSEMOVE: - 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); -} - // ============================================================================ // implementation // ============================================================================ @@ -101,9 +67,9 @@ LRESULT APIENTRY wxStatusBarProc(HWND hwnd, wxStatusBar95::wxStatusBar95() { - SetParent(NULL); - m_hWnd = 0; - m_windowId = 0; + SetParent(NULL); + m_hWnd = 0; + m_windowId = 0; } bool wxStatusBar95::Create(wxWindow *parent, @@ -123,6 +89,9 @@ bool wxStatusBar95::Create(wxWindow *parent, DWORD wstyle = WS_CHILD | WS_VISIBLE; + if ( style & wxCLIP_SIBLINGS ) + wstyle |= 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 // turn it off is to use CCS_TOP style - as we position the status bar @@ -151,16 +120,7 @@ bool wxStatusBar95::Create(wxWindow *parent, } 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); - - // but we want to process the messages from it still, so do custom - // subclassing here - gs_wndprocStatBar = (WXFARPROC)GetWindowLong(GetHwnd(), GWL_WNDPROC); - SetWindowLong(GetHwnd(), GWL_WNDPROC, (LONG)wxStatusBarProc); - SetWindowLong(GetHwnd(), GWL_USERDATA, (LONG)this); + SubclassWin(m_hWnd); return TRUE; } @@ -172,36 +132,38 @@ wxStatusBar95::~wxStatusBar95() void wxStatusBar95::CopyFieldsWidth(const int widths[]) { - if (widths && !m_statusWidths) - m_statusWidths = new int[m_nFields]; - - if ( widths != NULL ) { - for ( int i = 0; i < m_nFields; i++ ) - m_statusWidths[i] = widths[i]; - } - else { - delete [] m_statusWidths; - m_statusWidths = NULL; - } + if (widths && !m_statusWidths) + m_statusWidths = new int[m_nFields]; + + if ( widths != NULL ) + { + for ( int i = 0; i < m_nFields; i++ ) + m_statusWidths[i] = widths[i]; + } + else // no widths + { + delete [] m_statusWidths; + m_statusWidths = NULL; + } } 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 WXUNUSED_UNLESS_DEBUG(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() @@ -268,9 +230,10 @@ void wxStatusBar95::SetStatusText(const wxString& strText, int nField) wxCHECK_RET( (nField >= 0) && (nField < m_nFields), _T("invalid statusbar field index") ); - if ( !StatusBar_SetText(GetHwnd(), nField, strText) ) { - wxLogLastError(wxT("StatusBar_SetText")); - } + if ( !StatusBar_SetText(GetHwnd(), nField, strText) ) + { + wxLogLastError(wxT("StatusBar_SetText")); + } } wxString wxStatusBar95::GetStatusText(int nField) const @@ -278,14 +241,15 @@ wxString wxStatusBar95::GetStatusText(int nField) const wxCHECK_MSG( (nField >= 0) && (nField < m_nFields), wxEmptyString, _T("invalid statusbar field index") ); - wxString str; - int len = StatusBar_GetTextLen(GetHwnd(), nField); - if (len > 0) - { - StatusBar_GetText(GetHwnd(), nField, str.GetWriteBuf(len)); - str.UngetWriteBuf(); - } - return str; + wxString str; + int len = StatusBar_GetTextLen(GetHwnd(), nField); + if ( len > 0 ) + { + StatusBar_GetText(GetHwnd(), nField, str.GetWriteBuf(len)); + str.UngetWriteBuf(); + } + + return str; } int wxStatusBar95::GetBorderX() const @@ -320,7 +284,7 @@ bool wxStatusBar95::GetFieldRect(int i, wxRect& rect) const RECT r; if ( !::SendMessage(GetHwnd(), SB_GETRECT, i, (LPARAM)&r) ) { - wxLogLastError("SendMessage(SB_GETRECT)"); + wxLogLastError(wxT("SendMessage(SB_GETRECT)")); } wxCopyRECTToRect(r, rect);