X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/837e57436a89516a5fa9f478f401e06bd872c17c..18c98e42eeb75317f75c9ba20b09a5bd531a690c:/src/msw/statbox.cpp?ds=inline diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 6ca6074e54..7ef4f3bddd 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -75,7 +75,7 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, WXDWORD exStyle = Determine3DEffects(0, &want3D) ; HWND wx_button = - CreateWindowEx(exStyle, _T("BUTTON"), (const wxChar *)label, msStyle, + CreateWindowEx(exStyle, wxT("BUTTON"), (const wxChar *)label, msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); #if wxUSE_CTL3D @@ -99,54 +99,24 @@ bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, return TRUE; } -void wxStaticBox::SetLabel(const wxString& label) +wxSize wxStaticBox::DoGetBestSize() { - SetWindowText((HWND)m_hWnd, (const wxChar *)label); -} - -void wxStaticBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - int current_width; + int cx, cy; + wxGetCharSize(GetHWND(), &cx, &cy, &GetFont()); - int cx; - int cy; - int cyf; + int wBox; + GetTextExtent(wxGetWindowText(m_hWnd), &wBox, &cy); - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); + wBox += 3*cx; + int hBox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy); - GetTextExtent(wxGetWindowText(m_hWnd), ¤t_width, &cyf, - NULL,NULL, & this->GetFont()); - if ( w1 < 0 ) - w1 = current_width + 3*cx; - if ( h1 < 0 ) - h1 = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cyf); - - MoveWindow((HWND)m_hWnd, x1, y1, w1, h1, TRUE); + return wxSize(wBox, hBox); } WXHBRUSH wxStaticBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) + WXUINT message, + WXWPARAM wParam, + WXLPARAM lParam) { #if wxUSE_CTL3D if ( m_useCtl3D ) @@ -191,9 +161,9 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event) // Alternatively, just make sure that wxStaticBox is always at the back! There are probably // few other circumstances where it matters about child clipping. But what about painting onto // to panel, inside a groupbox? Doesn't appear, because the box wipes it out. - wxWindow *parent = GetParent(); - if ( parent && parent->GetHWND() && (::GetWindowLong((HWND) parent->GetHWND(), GWL_STYLE) & WS_CLIPCHILDREN) ) - { + wxWindow *parent = GetParent(); + if ( parent && parent->GetHWND() && (::GetWindowLong((HWND) parent->GetHWND(), GWL_STYLE) & WS_CLIPCHILDREN) ) + { // TODO: May in fact need to generate a paint event for inside this // control's rectangle, otherwise all controls are going to be clipped - // ugh. @@ -202,20 +172,20 @@ void wxStaticBox::OnEraseBackground(wxEraseEvent& event) RECT rect; - ::GetClientRect((HWND) GetHWND(), &rect); + ::GetClientRect(GetHwnd(), &rect); ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush); ::DeleteObject(hBrush); ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); - } - else - { - event.Skip(); - } + } + else + { + event.Skip(); + } } long wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - if (nMsg == WM_NCHITTEST) + if ( nMsg == WM_NCHITTEST) { int xPos = LOWORD(lParam); // horizontal position of cursor int yPos = HIWORD(lParam); // vertical position of cursor