// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "statbr95.h"
#endif
}
else
{
+#ifndef __WXWINCE__
// may be some versions of comctl32.dll do need it - anyhow, it won't
// do any harm
wstyle |= SBARS_SIZEGRIP;
+#endif
}
m_hWnd = (WXHWND)CreateStatusWindow(wstyle,
SetFieldsCount(1);
SubclassWin(m_hWnd);
+ InheritAttributes();
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR));
wxCHECK_RET( (nField >= 0) && (nField < m_nFields),
_T("invalid statusbar field index") );
- if ( !StatusBar_SetText(GetHwnd(), nField, strText) )
+ // Get field style, if any
+ int style;
+ if (m_statusStyles)
+ {
+ switch(m_statusStyles[nField])
+ {
+ case wxSB_RAISED:
+ style = SBT_POPOUT;
+ break;
+ case wxSB_FLAT:
+ style = SBT_NOBORDERS;
+ break;
+ case wxSB_NORMAL:
+ default:
+ style = 0;
+ break;
+ }
+ }
+ else
+ style = 0;
+
+ // Pass both field number and style. MSDN library doesn't mention
+ // that nField and style have to be 'ORed'
+ if ( !StatusBar_SetText(GetHwnd(), nField | style, strText) )
{
wxLogLastError(wxT("StatusBar_SetText"));
}
int len = StatusBar_GetTextLen(GetHwnd(), nField);
if ( len > 0 )
{
- StatusBar_GetText(GetHwnd(), nField, str.GetWriteBuf(len));
- str.UngetWriteBuf();
+ StatusBar_GetText(GetHwnd(), nField, wxStringBuffer(str, len));
}
return str;
// 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);
+ wxWindowMSW::DoMoveWindow(x, y, width, height);
// adjust fields widths to the new size
SetFieldsWidth();
}
}
+void wxStatusBar95::SetStatusStyles(int n, const int styles[])
+{
+ wxStatusBarBase::SetStatusStyles(n, styles);
+
+ if (n != m_nFields)
+ return;
+
+ for (int i = 0; i < n; i++)
+ {
+ int style;
+ switch(styles[i])
+ {
+ case wxSB_RAISED:
+ style = SBT_POPOUT;
+ break;
+ case wxSB_FLAT:
+ style = SBT_NOBORDERS;
+ break;
+ case wxSB_NORMAL:
+ default:
+ style = 0;
+ break;
+ }
+ // The SB_SETTEXT message is both used to set the field's text as well as
+ // the fields' styles. MSDN library doesn't mention
+ // that nField and style have to be 'ORed'
+ wxString text = GetStatusText(i);
+ if (!StatusBar_SetText(GetHwnd(), style | i, text))
+ {
+ wxLogLastError(wxT("StatusBar_SetText"));
+ }
+ }
+}
+
#endif // __WIN95__ && wxUSE_NATIVE_STATUSBAR