+#if wxUSE_UXTHEME
+ if ( autoDraw && wxUxThemeEngine::GetIfActive() )
+ {
+ MSWDrawXPBackground(this, item);
+ wxUxThemeHandle theme(this, L"BUTTON");
+
+ // calculate content area margins
+ // assuming here that each state is the same size
+ MARGINS margins;
+ wxUxThemeEngine::Get()->GetThemeMargins(theme, NULL,
+ BP_PUSHBUTTON, PBS_NORMAL,
+ TMT_CONTENTMARGINS, NULL,
+ &margins);
+ int marginX = margins.cxLeftWidth + 1;
+ int marginY = margins.cyTopHeight + 1;
+ int x1,y1;
+
+ if ( m_windowStyle & wxBU_LEFT )
+ {
+ x1 = x + marginX;
+ }
+ else if ( m_windowStyle & wxBU_RIGHT )
+ {
+ x1 = x + (width - wBmp) - marginX;
+ }
+ else
+ {
+ x1 = x + (width - wBmp) / 2;
+ }
+
+ if ( m_windowStyle & wxBU_TOP )
+ {
+ y1 = y + marginY;
+ }
+ else if ( m_windowStyle & wxBU_BOTTOM )
+ {
+ y1 = y + (height - hBmp) - marginY;
+ }
+ else
+ {
+ y1 = y + (height - hBmp) / 2;
+ }
+
+ // draw the bitmap
+ wxDCTemp dst((WXHDC)hDC);
+ dst.DrawBitmap(*bitmap, x1, y1, true);
+
+ return true;
+ }
+#endif // wxUSE_UXTHEME
+