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
This commit is contained in:
Vadim Zeitlin
2007-04-16 00:53:05 +00:00
parent 59ee63e934
commit d4adf63ba3

View File

@@ -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;
flags |= wxCONTROL_CURRENT;
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);
// draw the text
const wxString& label = GetLabel();