- SetName(name);
-#if wxUSE_VALIDATORS
- SetValidator(validator);
-#endif
-
- if (parent) parent->AddChild(this);
- SetBackgroundColour(parent->GetBackgroundColour());
- SetForegroundColour(parent->GetForegroundColour());
-
- if ( id == -1 )
- m_windowId = (int)NewControlId();
- else
- m_windowId = id;
-
- int x = pos.x;
- int y = pos.y;
- int width = size.x;
- int height = size.y;
- m_windowStyle = style ;
-
- long groupStyle = 0;
- if (m_windowStyle & wxRB_GROUP)
- groupStyle = WS_GROUP;
-
-// TODO:
-/*
-// long msStyle = groupStyle | RADIO_FLAGS;
-// long msStyle = groupStyle | BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE ;
-
- m_hWnd = (WXHWND) CreateWindowEx(MakeExtendedStyle(m_windowStyle), RADIO_CLASS, "toggle",
- msStyle,0,0,0,0,
- (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL);
-
- wxCHECK_MSG( m_hWnd, "Failed to create radio button", FALSE );
-
-*/
- // Subclass again for purposes of dialog editing mode
- SubclassWin(GetHWND());
-
- SetSize(x, y, width, height);
-
- return TRUE;
+ // when the radio button receives a WM_SETFOCUS message it generates a
+ // BN_CLICKED which is totally unexpected and leads to catastrophic results
+ // if you pop up a dialog from the radio button event handler as, when the
+ // dialog is dismissed, the focus is returned to the radio button which
+ // generates BN_CLICKED which leads to showing another dialog and so on
+ // without end!
+ //
+ // to aviod this, we drop the pseudo BN_CLICKED events generated when the
+ // button gains focus
+ m_bFocusJustSet = TRUE;
+
+ wxControl::SetFocus();