From d4adf63ba347a0558607dcb7877182c2412f8b8c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 16 Apr 2007 00:53:05 +0000 Subject: [PATCH] use wxRenderer::DrawCheckBox() instead of doing it manually git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/checkbox.cpp | 80 ++++++-------------------------------------- 1 file changed, 10 insertions(+), 70 deletions(-) diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp index 4a11fa5c46..281861d855 100644 --- a/src/msw/checkbox.cpp +++ b/src/msw/checkbox.cpp @@ -35,7 +35,7 @@ #endif #include "wx/msw/uxtheme.h" -#include "wx/msw/private.h" +#include "wx/renderer.h" // ---------------------------------------------------------------------------- // constants @@ -53,10 +53,6 @@ #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(); -- 2.45.2