[COMCTL32] -Draw button with classic style if BM_SETIMAGE was used.

svn path=/trunk/; revision=73897
This commit is contained in:
Giannis Adamopoulos 2017-02-24 22:47:59 +00:00
parent f3aa1616ef
commit 777a9ec12a

View file

@ -38,6 +38,7 @@ typedef void (*pfThemedPaint)(HTHEME theme, HWND hwnd, HDC hdc, ButtonState draw
#define STATE_GWL_OFFSET 0
#define HFONT_GWL_OFFSET (sizeof(LONG))
#define HIMAGE_GWL_OFFSET (HFONT_GWL_OFFSET+sizeof(HFONT))
static inline LONG get_button_state( HWND hwnd )
{
@ -320,15 +321,25 @@ static const pfThemedPaint btnThemedPaintFunc[BUTTON_TYPE + 1] =
BOOL BUTTON_PaintWithTheme(HTHEME theme, HWND hwnd, HDC hParamDC, LPARAM prfFlag)
{
DWORD dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
DWORD dwStyleEx = GetWindowLongW(hwnd, GWL_EXSTYLE);
UINT dtFlags = get_drawtext_flags(dwStyle, dwStyleEx);
int state = get_button_state(hwnd);
DWORD dwStyle;
DWORD dwStyleEx;
UINT dtFlags;
int state;
ButtonState drawState;
pfThemedPaint paint = btnThemedPaintFunc[ dwStyle & BUTTON_TYPE ];
pfThemedPaint paint;
dwStyle = GetWindowLongW(hwnd, GWL_STYLE);
paint = btnThemedPaintFunc[ dwStyle & BUTTON_TYPE ];
if (!paint)
return FALSE;
if (GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET) != 0)
return FALSE;
dwStyleEx = GetWindowLongW(hwnd, GWL_EXSTYLE);
dtFlags = get_drawtext_flags(dwStyle, dwStyleEx);
state = get_button_state(hwnd);
if(IsWindowEnabled(hwnd))
{
if(state & BST_PUSHED) drawState = STATE_PRESSED;