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:
@@ -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();
|
||||
|
Reference in New Issue
Block a user