]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/checkbox.cpp
do use the font in DoGetTextExtent()
[wxWidgets.git] / src / msw / checkbox.cpp
index 4a11fa5c469ebe02d04a9f29ed72661cc4610c07..281861d85566e04db69e9810f37eab2b3b7767aa 100644 (file)
@@ -35,7 +35,7 @@
 #endif
 
 #include "wx/msw/uxtheme.h"
-#include "wx/msw/private.h"
+#include "wx/renderer.h"
 
 // ----------------------------------------------------------------------------
 // constants
     #define BST_INDETERMINATE 0x0002
 #endif
 
-#ifndef DFCS_HOT
-    #define DFCS_HOT 0x1000
-#endif
-
 #ifndef DT_HIDEPREFIX
     #define DT_HIDEPREFIX 0x00100000
 #endif
@@ -449,24 +445,20 @@ bool wxCheckBox::MSWOnDraw(WXDRAWITEMSTRUCT *item)
     const bool isFocused = m_isPressed || FindFocus() == this;
 
 
-    // draw the checkbox itself: note that this should really, really be in
-    // wxRendererNative but unfortunately we can't add a new virtual function
-    // to it without breaking backwards compatibility
+    // draw the checkbox itself
+    wxDCTemp dc(hdc);
 
-    // classic Win32 version -- this can be useful when we move this into
-    // wxRendererNative
-#if defined(__WXWINCE__) || !wxUSE_UXTHEME
-    UINT state = DFCS_BUTTONCHECK;
+    int flags = 0;
     if ( !IsEnabled() )
-        state |= DFCS_INACTIVE;
+        flags |= wxCONTROL_DISABLED;
     switch ( Get3StateValue() )
     {
         case wxCHK_CHECKED:
-            state |= DFCS_CHECKED;
+            flags |= wxCONTROL_CHECKED;
             break;
 
         case wxCHK_UNDETERMINED:
-            state |= DFCS_PUSHED;
+            flags |= wxCONTROL_PRESSED;
             break;
 
         default:
@@ -479,62 +471,10 @@ bool wxCheckBox::MSWOnDraw(WXDRAWITEMSTRUCT *item)
     }
 
     if ( wxFindWindowAtPoint(wxGetMousePosition()) == this )
-        state |= DFCS_HOT;
-
-    if ( !::DrawFrameControl(hdc, &rectCheck, DFC_BUTTON, state) )
-    {
-        wxLogLastError(_T("DrawFrameControl(DFC_BUTTON)"));
-    }
-#else // XP version
-    wxUxThemeEngine *themeEngine = wxUxThemeEngine::GetIfActive();
-    if ( !themeEngine )
-        return false;
-
-    wxUxThemeHandle theme(this, L"BUTTON");
-    if ( !theme )
-        return false;
+        flags |= wxCONTROL_CURRENT;
 
-    int state;
-    switch ( Get3StateValue() )
-    {
-        case wxCHK_CHECKED:
-            state = CBS_CHECKEDNORMAL;
-            break;
-
-        case wxCHK_UNDETERMINED:
-            state = CBS_MIXEDNORMAL;
-            break;
-
-        default:
-            wxFAIL_MSG( _T("unexpected Get3StateValue() return value") );
-            // fall through
-
-        case wxCHK_UNCHECKED:
-            state = CBS_UNCHECKEDNORMAL;
-            break;
-    }
-
-    if ( !IsEnabled() )
-        state += CBS_DISABLED_OFFSET;
-    else if ( m_isPressed )
-        state += CBS_PRESSED_OFFSET;
-    else if ( m_isHot )
-        state += CBS_HOT_OFFSET;
-
-    HRESULT hr = themeEngine->DrawThemeBackground
-                              (
-                                theme,
-                                hdc,
-                                BP_CHECKBOX,
-                                state,
-                                &rectCheck,
-                                NULL
-                              );
-    if ( FAILED(hr) )
-    {
-        wxLogApiError(_T("DrawThemeBackground(BP_CHECKBOX)"), hr);
-    }
-#endif // 0/1
+    wxRendererNative::Get().
+        DrawCheckBox(this, dc, wxRectFromRECT(rectCheck), flags);
 
     // draw the text
     const wxString& label = GetLabel();