X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e0a050e347b1ece07ad5f165ba1b1d16edbeae77..5166d04e4f0e5a85fb69dd67eafda87daa79dc06:/src/msw/checkbox.cpp diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 1b47fbe0a4..38449a2da3 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -30,12 +30,15 @@ #ifndef WX_PRECOMP #include "wx/brush.h" + #include "wx/dcclient.h" #include "wx/dcscreen.h" #include "wx/settings.h" #endif -#include "wx/msw/uxtheme.h" +#include "wx/msw/dc.h" // for wxDCTemp #include "wx/renderer.h" +#include "wx/msw/uxtheme.h" +#include "wx/msw/private/button.h" // ---------------------------------------------------------------------------- // constants @@ -187,6 +190,8 @@ bool wxCheckBox::Create(wxWindow *parent, msStyle |= BS_LEFTTEXT | BS_RIGHT; } + msStyle |= wxMSWButton::GetMultilineStyle(label); + return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0); } @@ -211,7 +216,9 @@ wxSize wxCheckBox::DoGetBestSize() const int wCheckbox, hCheckbox; if ( !str.empty() ) { - GetTextExtent(GetLabelText(str), &wCheckbox, &hCheckbox); + wxClientDC dc(wx_const_cast(wxCheckBox *, this)); + dc.SetFont(GetFont()); + dc.GetMultiLineTextExtent(GetLabelText(str), &wCheckbox, &hCheckbox); wCheckbox += s_checkSize + GetCharWidth(); if ( hCheckbox < s_checkSize ) @@ -235,6 +242,13 @@ wxSize wxCheckBox::DoGetBestSize() const // wxCheckBox operations // ---------------------------------------------------------------------------- +void wxCheckBox::SetLabel(const wxString& label) +{ + wxMSWButton::UpdateMultilineStyle(GetHwnd(), label); + + wxCheckBoxBase::SetLabel(label); +} + void wxCheckBox::SetValue(bool val) { Set3StateValue(val ? wxCHK_CHECKED : wxCHK_UNCHECKED);