X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/025f7d775c8366dec72258e0d9d83848203c4871..96ca74cdda2a8ed485facb45de263e5b7b51d7be:/src/msw/checkbox.cpp?ds=inline diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 02a5a495c5..38449a2da3 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -30,13 +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/dc.h" // for wxDCTemp -#include "wx/msw/uxtheme.h" #include "wx/renderer.h" +#include "wx/msw/uxtheme.h" +#include "wx/msw/private/button.h" // ---------------------------------------------------------------------------- // constants @@ -188,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); } @@ -212,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 ) @@ -236,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);