/////////////////////////////////////////////////////////////////////////////
-// Name: stattext.cpp
+// Name: src/msw/stattext.cpp
// Purpose: wxStaticText
// Author: Julian Smart
// Modified by:
#pragma hdrstop
#endif
+#if wxUSE_STATTEXT
+
#ifndef WX_PRECOMP
#include "wx/event.h"
#include "wx/app.h"
m_windowStyle = style;
- long msStyle = WS_CHILD | WS_VISIBLE /* | WS_CLIPSIBLINGS */ ;
+ long msStyle = WS_CHILD | WS_VISIBLE;
+
+ if ( m_windowStyle & wxCLIP_SIBLINGS )
+ msStyle |= WS_CLIPSIBLINGS;
if (m_windowStyle & wxALIGN_CENTRE)
msStyle |= SS_CENTER;
else if (m_windowStyle & wxALIGN_RIGHT)
wxCHECK_MSG( m_hWnd, FALSE, wxT("Failed to create static ctrl") );
-#if wxUSE_CTL3D
-/*
- if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS))
- Ctl3dSubclassCtl(static_item);
-*/
-#endif
-
SubclassWin(m_hWnd);
- SetFont(parent->GetFont());
+ wxControl::SetFont(parent->GetFont());
SetSize(x, y, width, height);
return TRUE;
return wxSize(widthTextMax, heightTextTotal);
}
+void wxStaticText::DoSetSize(int x, int y, int w, int h, int sizeFlags)
+{
+ // we need to refresh the window after changing its size as the standard
+ // control doesn't always update itself properly
+ wxStaticTextBase::DoSetSize(x, y, w, h, sizeFlags);
+
+ Refresh();
+}
+
void wxStaticText::SetLabel(const wxString& label)
{
- SetWindowText(GetHwnd(), label);
+ wxStaticTextBase::SetLabel(label);
// adjust the size of the window to fit to the label unless autoresizing is
// disabled
}
}
-long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+
+bool wxStaticText::SetFont(const wxFont& font)
{
- // Ensure that static items get messages. Some controls don't like this
- // message to be intercepted (e.g. RichEdit), hence the tests.
- if (nMsg == WM_NCHITTEST)
- return (long)HTCLIENT;
+ bool ret = wxControl::SetFont(font);
- return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
-}
+ // adjust the size of the window to fit to the label unless autoresizing is
+ // disabled
+ if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
+ {
+ DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+ }
+ return ret;
+}
+long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+{
+ // Ensure that static items get messages. Some controls don't like this
+ // message to be intercepted (e.g. RichEdit), hence the tests.
+ // Messes up display with Windows XP, apparently, so have to
+ // do explicit hit-testing in wxWindowMSW.
+#if 0
+ if (nMsg == WM_NCHITTEST)
+ return (long)HTCLIENT;
+#endif
+ return wxWindow::MSWWindowProc(nMsg, wParam, lParam);
+}
+#endif // wxUSE_STATTEXT