+ ::DrawFrameControl(GetHdcOf(*((wxMSWDCImpl*)dc.GetImpl())), &r, DFC_SCROLL, style);
+}
+
+void
+wxRendererMSW::DrawCheckBox(wxWindow * WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rect,
+ int flags)
+{
+ RECT r;
+ wxCopyRectToRECT(rect, r);
+
+ int style = DFCS_BUTTONCHECK;
+ if ( flags & wxCONTROL_CHECKED )
+ style |= DFCS_CHECKED;
+ if ( flags & wxCONTROL_DISABLED )
+ style |= DFCS_INACTIVE;
+ if ( flags & wxCONTROL_FLAT )
+ style |= DFCS_MONO;
+ if ( flags & wxCONTROL_PRESSED )
+ style |= DFCS_PUSHED;
+ if ( flags & wxCONTROL_CURRENT )
+ style |= DFCS_HOT;
+
+ ::DrawFrameControl(GetHdcOf(*((wxMSWDCImpl*)dc.GetImpl())), &r, DFC_BUTTON, style);
+}
+
+void
+wxRendererMSW::DrawPushButton(wxWindow * WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rectOrig,
+ int flags)
+{
+ wxRect rect(rectOrig);
+
+ int style = DFCS_BUTTONPUSH;
+ if ( flags & wxCONTROL_DISABLED )
+ style |= DFCS_INACTIVE;
+ if ( flags & wxCONTROL_PRESSED )
+ style |= DFCS_PUSHED | DFCS_FLAT;
+ if ( flags & wxCONTROL_ISDEFAULT )
+ {
+ // DrawFrameControl() doesn't seem to support default buttons so we
+ // have to draw the border ourselves
+ wxDCPenChanger pen(dc, *wxBLACK_PEN);
+ wxDCBrushChanger brush(dc, *wxTRANSPARENT_BRUSH);
+ dc.DrawRectangle(rect);
+ rect.Deflate(1);
+ }
+
+ RECT rc;
+ wxCopyRectToRECT(rect, rc);
+
+ ::DrawFrameControl(GetHdcOf(*((wxMSWDCImpl*)dc.GetImpl())), &rc, DFC_BUTTON, style);
+}
+
+void wxRendererMSW::DrawFocusRect(wxWindow * WXUNUSED(win),
+ wxDC& dc,
+ const wxRect& rect,
+ int WXUNUSED(flags))
+{
+ RECT rc;
+ wxCopyRectToRECT(rect, rc);
+
+ ::DrawFocusRect(GetHdcOf(*((wxMSWDCImpl*)dc.GetImpl())), &rc);
+}
+
+wxSize wxRendererMSW::GetCheckBoxSize(wxWindow * WXUNUSED(win))
+{
+ return wxSize(::GetSystemMetrics(SM_CXMENUCHECK),
+ ::GetSystemMetrics(SM_CYMENUCHECK));
+}
+
+int wxRendererMSW::GetHeaderButtonHeight(wxWindow * WXUNUSED(win))
+{
+ // some "reasonable" value returned in case of error, it doesn't really
+ // correspond to anything but it's better than returning 0
+ static const int DEFAULT_HEIGHT = 20;
+
+
+ // create a temporary header window just to get its geometry
+ HWND hwndHeader = ::CreateWindow(WC_HEADER, NULL, 0,
+ 0, 0, 0, 0, NULL, NULL, NULL, NULL);
+ if ( !hwndHeader )
+ return DEFAULT_HEIGHT;
+
+ wxON_BLOCK_EXIT1( ::DestroyWindow, hwndHeader );
+
+ // initialize the struct filled with the values by Header_Layout()
+ RECT parentRect = { 0, 0, 100, 100 };
+ WINDOWPOS wp = { 0, 0, 0, 0, 0, 0, 0 };
+ HDLAYOUT hdl = { &parentRect, &wp };
+
+ return Header_Layout(hwndHeader, &hdl) ? wp.cy : DEFAULT_HEIGHT;