BOOL BUTTON_PaintWithTheme(HTHEME theme, HWND hwnd, HDC hParamDC, LPARAM prfFlag);
+static inline LONG_PTR get_button_image(HWND hwnd)
+{
+ return GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET );
+}
+
+static inline LONG_PTR set_button_image(HWND hwnd, LONG_PTR image)
+{
+ return SetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET, image );
+}
+
#endif
static inline HFONT get_button_font( HWND hwnd )
default:
return 0;
}
+#ifdef _USER32_
oldHbitmap = (HBITMAP)SetWindowLongPtrW( hWnd, HIMAGE_GWL_OFFSET, lParam );
+#else
+ oldHbitmap = (HBITMAP)set_button_image(hWnd, lParam );
+#endif
InvalidateRect( hWnd, NULL, FALSE );
return (LRESULT)oldHbitmap;
case BM_GETIMAGE:
+#ifdef _USER32_
return GetWindowLongPtrW( hWnd, HIMAGE_GWL_OFFSET );
+#else
+ return get_button_image(hWnd);
+#endif
case BM_GETCHECK:
return get_button_state( hWnd ) & 3;
}
case BS_ICON:
+#ifdef _USER32_
if (!GetIconInfo((HICON)GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET ), &iconInfo))
+#else
+ if (!GetIconInfo((HICON)get_button_image(hwnd), &iconInfo))
+#endif
goto empty_rect;
GetObjectW (iconInfo.hbmColor, sizeof(BITMAP), &bm);
break;
case BS_BITMAP:
+#ifdef _USER32_
if (!GetObjectW( (HANDLE)GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET ), sizeof(BITMAP), &bm))
+#else
+ if (!GetObjectW( (HANDLE)get_button_image(hwnd), sizeof(BITMAP), &bm))
+#endif
goto empty_rect;
r.right = r.left + bm.bmWidth;
case BS_ICON:
flags |= DST_ICON;
+#ifdef _USER32_
lp = GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET );
+#else
+ lp = get_button_image(hwnd);
+#endif
break;
case BS_BITMAP:
flags |= DST_BITMAP;
+#ifdef _USER32_
lp = GetWindowLongPtrW( hwnd, HIMAGE_GWL_OFFSET );
+#else
+ lp = get_button_image(hwnd);
+#endif
break;
default: