]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/checkbox.cpp
fixed WM_GETDLGCODE processing to include the bits returned by the DefWindowProc...
[wxWidgets.git] / src / msw / checkbox.cpp
index 86211b4fcd15873ab3b1e5f39ddd4a6248a6fa5a..bc4e9e8393f7eb64e497dfb7388333e558e9c1e4 100644 (file)
@@ -63,7 +63,6 @@ bool wxCheckBox::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id))
     return TRUE;
 }
 
-// Single check box item
 bool wxCheckBox::Create(wxWindow *parent,
                         wxWindowID id,
                         const wxString& label,
@@ -72,79 +71,14 @@ bool wxCheckBox::Create(wxWindow *parent,
                         const wxValidator& validator,
                         const wxString& name)
 {
-    SetName(name);
-#if wxUSE_VALIDATORS
-    SetValidator(validator);
-#endif // wxUSE_VALIDATORS
-    if (parent) parent->AddChild(this);
-
-    SetBackgroundColour(parent->GetBackgroundColour()) ;
-    SetForegroundColour(parent->GetForegroundColour()) ;
-
-    m_windowStyle = style;
-
-    // VZ: disabling this ugliness which completely breaks checkboxes in wxGrid
-    //     whoever did it, please tell me where and how does the checkbox fail
-    //     to appear
-#if 0
-    wxString Label = label;
-    if (Label == wxT(""))
-        Label = wxT(" "); // Apparently needed or checkbox won't show
-#endif // 0
+    if ( !CreateControl(parent, id, pos, size, style, validator, name) )
+        return FALSE;
 
-    if ( id == -1 )
-        m_windowId = NewControlId();
-    else
-        m_windowId = id;
-
-    int x = pos.x;
-    int y = pos.y;
-    int width = size.x;
-    int height = size.y;
-
-    long msStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_CHILD | WS_VISIBLE;
+    long msStyle = BS_AUTOCHECKBOX | WS_TABSTOP;
     if ( style & wxALIGN_RIGHT )
         msStyle |= BS_LEFTTEXT;
 
-    if ( style & wxCLIP_SIBLINGS )
-        msStyle |= WS_CLIPSIBLINGS;
-
-    // We perhaps have different concepts of 3D here - a 3D border,
-    // versus a 3D button.
-    // So we only wish to give a border if this is specified
-    // in the style.
-    bool want3D;
-    WXDWORD exStyle = Determine3DEffects(0, &want3D) ;
-
-    // Even with extended styles, need to combine with WS_BORDER
-    // for them to look right.
-    /*
-       if ( want3D || wxStyleHasBorder(m_windowStyle) )
-       msStyle |= WS_BORDER;
-     */
-
-    m_hWnd = (WXHWND)CreateWindowEx(exStyle, wxT("BUTTON"), label,
-            msStyle,
-            0, 0, 0, 0,
-            (HWND)parent->GetHWND(), (HMENU)m_windowId,
-            wxGetInstance(), NULL);
-
-#if wxUSE_CTL3D
-    if (want3D)
-    {
-        Ctl3dSubclassCtl(GetHwnd());
-        m_useCtl3D = TRUE;
-    }
-#endif
-
-    // Subclass again for purposes of dialog editing mode
-    SubclassWin(m_hWnd);
-
-    SetFont(parent->GetFont());
-
-    SetSize(x, y, width, height);
-
-    return TRUE;
+    return MSWCreateControl(wxT("BUTTON"), msStyle, pos, size, label, 0);
 }
 
 void wxCheckBox::SetLabel(const wxString& label)
@@ -159,9 +93,9 @@ wxSize wxCheckBox::DoGetBestSize() const
     if ( !s_checkSize )
     {
         wxScreenDC dc;
-        dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
+        dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
 
-        s_checkSize = (3*dc.GetCharHeight())/2;
+        s_checkSize = dc.GetCharHeight();
     }
 
     wxString str = wxGetWindowText(GetHWND());