X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/025f7d775c8366dec72258e0d9d83848203c4871..b85b06e13d22e7fc1604ec1a49caa1227a1b3d36:/src/msw/checkbox.cpp diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 02a5a495c5..bc59d8ad1a 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -30,34 +30,20 @@ #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 // ---------------------------------------------------------------------------- -#ifndef BST_UNCHECKED - #define BST_UNCHECKED 0x0000 -#endif - -#ifndef BST_CHECKED - #define BST_CHECKED 0x0001 -#endif - -#ifndef BST_INDETERMINATE - #define BST_INDETERMINATE 0x0002 -#endif - -#ifndef DT_HIDEPREFIX - #define DT_HIDEPREFIX 0x00100000 -#endif - #ifndef BP_CHECKBOX #define BP_CHECKBOX 3 #endif @@ -188,6 +174,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 +200,9 @@ wxSize wxCheckBox::DoGetBestSize() const int wCheckbox, hCheckbox; if ( !str.empty() ) { - GetTextExtent(GetLabelText(str), &wCheckbox, &hCheckbox); + wxClientDC dc(const_cast(this)); + dc.SetFont(GetFont()); + dc.GetMultiLineTextExtent(GetLabelText(str), &wCheckbox, &hCheckbox); wCheckbox += s_checkSize + GetCharWidth(); if ( hCheckbox < s_checkSize ) @@ -236,6 +226,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);