if ( !CreateControl(parent, id, pos, size, style, validator, name) )
return false;
- long msStyle = WS_TABSTOP;
+ WXDWORD exstyle;
+ WXDWORD msStyle = MSWGetStyle(style, &exstyle);
+
+ msStyle |= wxMSWButton::GetMultilineStyle(label);
+
+ return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, exstyle);
+}
+
+WXDWORD wxCheckBox::MSWGetStyle(long style, WXDWORD *exstyle) const
+{
+ // buttons never have an external border, they draw their own one
+ WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
if ( style & wxCHK_3STATE )
msStyle |= BS_3STATE;
msStyle |= BS_LEFTTEXT | BS_RIGHT;
}
- msStyle |= wxMSWButton::GetMultilineStyle(label);
-
- return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0);
+ return msStyle;
}
// ----------------------------------------------------------------------------
if ( !CreateControl(parent, id, pos, size, style, validator, name) )
return false;
- long msStyle = WS_TABSTOP;
- if ( HasFlag(wxRB_GROUP) )
- msStyle |= WS_GROUP;
+ WXDWORD exstyle = 0;
+ WXDWORD msStyle = MSWGetStyle(style, &exstyle);
- // we use BS_RADIOBUTTON and not BS_AUTORADIOBUTTON because the use of the
- // latter can easily result in the application entering an infinite loop
- // inside IsDialogMessage()
- //
- // we used to use BS_RADIOBUTTON only for wxRB_SINGLE buttons but there
- // doesn't seem to be any harm to always use it and it prevents some hangs,
- // see #9786
- msStyle |= BS_RADIOBUTTON;
-
- if ( HasFlag(wxCLIP_SIBLINGS) )
- msStyle |= WS_CLIPSIBLINGS;
- if ( HasFlag(wxALIGN_RIGHT) )
- msStyle |= BS_LEFTTEXT | BS_RIGHT;
-
- if ( !MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0) )
+ if ( !MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, exstyle) )
return false;
// for compatibility with wxGTK, the first radio button in a group is
WXDWORD wxRadioButton::MSWGetStyle(long style, WXDWORD *exstyle) const
{
- WXDWORD styleMSW = wxControl::MSWGetStyle(style, exstyle);
+ WXDWORD msStyle = wxControl::MSWGetStyle(style, exstyle);
+
+ if ( HasFlag(wxRB_GROUP) )
+ msStyle |= WS_GROUP;
+
+ // we use BS_RADIOBUTTON and not BS_AUTORADIOBUTTON because the use of the
+ // latter can easily result in the application entering an infinite loop
+ // inside IsDialogMessage()
+ //
+ // we used to use BS_RADIOBUTTON only for wxRB_SINGLE buttons but there
+ // doesn't seem to be any harm to always use it and it prevents some hangs,
+ // see #9786
+ msStyle |= BS_RADIOBUTTON;
+
+ if ( style & wxCLIP_SIBLINGS )
+ msStyle |= WS_CLIPSIBLINGS;
+ if ( style & wxALIGN_RIGHT )
+ msStyle |= BS_LEFTTEXT | BS_RIGHT;
- if ( style & wxRB_GROUP )
- styleMSW |= WS_GROUP;
- return styleMSW;
+ return msStyle;
}
#endif // wxUSE_RADIOBTN