-    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;
-
-    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);