/* static */ wxSize wxButtonBase::GetDefaultSize() { static wxSize s_sizeBtn; if ( s_sizeBtn.x == 0 ) { wxScreenDC dc; dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)); // The size of a standard button in the dialog units is 50x14, // translate this to pixels. // // Windows' computes dialog units using average character width over // upper- and lower-case ASCII alphabet and not using the average // character width metadata stored in the font; see // http://support.microsoft.com/default.aspx/kb/145994 for detailed // discussion. // // NB: wxMulDivInt32() is used, because it correctly rounds the result const wxSize base = wxPrivate::GetAverageASCIILetterSize(dc); s_sizeBtn.x = wxMulDivInt32(50, base.x, 4); s_sizeBtn.y = wxMulDivInt32(14, base.y, 8); } return s_sizeBtn; }
void wxRendererXP::DrawGauge(wxWindow* win, wxDC& dc, const wxRect& rect, int value, int max, int flags) { wxUxThemeHandle hTheme(win, L"PROGRESS"); if ( !hTheme ) { m_rendererNative.DrawGauge(win, dc, rect, value, max, flags); return; } RECT r; wxCopyRectToRECT(rect, r); wxUxThemeEngine::Get()->DrawThemeBackground( hTheme, GetHdcOf(dc.GetTempHDC()), PP_BAR, 0, &r, NULL); RECT contentRect; wxUxThemeEngine::Get()->GetThemeBackgroundContentRect( hTheme, GetHdcOf(dc.GetTempHDC()), PP_BAR, 0, &r, &contentRect); contentRect.right = contentRect.left + wxMulDivInt32(contentRect.right - contentRect.left, value, max); wxUxThemeEngine::Get()->DrawThemeBackground( hTheme, GetHdcOf(dc.GetTempHDC()), PP_CHUNK, 0, &contentRect, NULL); }