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