X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/025f7d775c8366dec72258e0d9d83848203c4871..76c66f195356ba96d37ff95f7a0289fcb0769f9f:/src/msw/checkbox.cpp diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 02a5a495c5..44645f3b72 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -35,8 +35,9 @@ #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 +189,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 +215,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 +241,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);