diff --git a/controls/button.c b/controls/button.c
index de52ff86394f3d3fad9fe79a74e5e461c52cae23..747b73238f2dee0991909c6e5ca65d24829f01c5 100644
--- a/controls/button.c
+++ b/controls/button.c
@@ -236,12 +236,13 @@ static inline LRESULT WINAPI ButtonWndProc_locked(WND* wndPtr, UINT uMsg,
         return infoPtr->hFont;
 
     case WM_SETFOCUS:
-        if ((style == BS_AUTORADIOBUTTON) && (GetCapture() != hWnd) &&
+        if ((style == BS_RADIOBUTTON || style == BS_AUTORADIOBUTTON) && (GetCapture() != hWnd) &&
             !(SendMessageA(hWnd, BM_GETCHECK, 0, 0) & BST_CHECKED))
 	{
             /* The notification is sent when the button (BS_AUTORADIOBUTTON) 
                is unckecked and the focus was not given by a mouse click. */
-            SendMessageA( hWnd, BM_SETCHECK, TRUE, 0 );
+	    if (style == BS_AUTORADIOBUTTON)
+		    SendMessageA( hWnd, BM_SETCHECK, BUTTON_CHECKED, 0 );
             SendMessageA( GetParent(hWnd), WM_COMMAND,
                           MAKEWPARAM( wndPtr->wIDmenu, BN_CLICKED ), hWnd);
         }