re-enable wxDrawWindowOnDC

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2005-02-19 23:08:26 +00:00
parent 0c243d9389
commit 32478f52ad
3 changed files with 36 additions and 18 deletions

View File

@ -15,6 +15,7 @@ testItems = [
"GenericDirCtrl",
"ListBox",
"ListCtrl",
"ListCtrl With GridLines",
"RadioBox",
"RadioButton",
"ScrollBar",
@ -103,9 +104,9 @@ class Frame(wx.Frame):
widget.Update()
self.Update()
self.GetBMP(1)
##self.GetBMP(1)
self.GetBMP(2)
self.GetBMP(4)
##self.GetBMP(4)
# make it visible again for the user to compare
widget.SetPosition(visiblePos)
@ -125,8 +126,9 @@ class Frame(wx.Frame):
wdc = wx.WindowDC(w)
dc.Blit(0,0, sz.width, sz.height, wdc, 0, 0)
else:
wx.DrawWindowOnDC(w, dc, method)
##wx.DrawWindowOnDC(w, dc, method)
wx.DrawWindowOnDC(w, dc)
dc.SelectObject(wx.NullBitmap)
bmp.SetMaskColour(maskClr)
self.right.SetBMP(bmp, method)
@ -181,8 +183,11 @@ class Frame(wx.Frame):
w.SetSelection(2)
self.DoWidget(w)
def TestListCtrl(self, p):
w = wx.ListCtrl(p, -1, size=(250, 100), style=wx.LC_REPORT)
def TestListCtrl(self, p, useGridLines=False):
style=wx.LC_REPORT
if useGridLines:
style = style | wx.LC_HRULES | wx.LC_VRULES
w = wx.ListCtrl(p, -1, size=(250, 100), style=style)
w.InsertColumn(0, "Col 1")
w.InsertColumn(1, "Col 2")
w.InsertColumn(2, "Col 3")
@ -191,7 +196,10 @@ class Frame(wx.Frame):
w.SetStringItem(x, 1, str(x))
w.SetStringItem(x, 2, str(x))
self.DoWidget(w)
def TestListCtrl_With_GridLines(self, p):
self.TestListCtrl(p, True)
def TestRadioBox(self, p):
w = wx.RadioBox(p, -1, "RadioBox",
choices=testChoices2, majorDimension=3)

View File

@ -169,6 +169,7 @@
%rename(StopWatch) wxStopWatch;
%rename(FileHistory) wxFileHistory;
%rename(SingleInstanceChecker) wxSingleInstanceChecker;
%rename(DrawWindowOnDC) wxDrawWindowOnDC;
%rename(TipProvider) wxTipProvider;
%rename(PyTipProvider) wxPyTipProvider;
%rename(ShowTip) wxShowTip;

View File

@ -209,8 +209,6 @@ public:
//---------------------------------------------------------------------------
// Experimental...
#if 0
%{
#ifdef __WXMSW__
#include <wx/msw/private.h>
@ -221,10 +219,14 @@ public:
%inline %{
void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
bool wxDrawWindowOnDC(wxWindow* window, const wxDC& dc
#if 0
, int method
#endif
)
{
#ifdef __WXMSW__
#if 0
switch (method)
{
case 1:
@ -236,11 +238,14 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
break;
case 2:
// This one works much better, except for on XP. On Win2k nearly
// all widgets and their children are captured correctly[**]. On
// XP with Themes activated most native widgets draw only
// partially, if at all. Without themes it works just like on
// Win2k.
#endif
// This one works much better, nearly all widgets and their
// children are captured correctly[**]. Prior to the big
// background erase changes that Vadim did in 2004-2005 this
// method failed badly on XP with Themes activated, most native
// widgets draw only partially, if at all. Without themes it
// worked just like on Win2k. After those changes this method
// works very well.
//
// ** For example the radio buttons in a wxRadioBox are not its
// children by default, but you can capture it via the panel
@ -248,6 +253,8 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
::SendMessage(GetHwndOf(window), WM_PRINT, (long)GetHdcOf(dc),
PRF_CLIENT | PRF_NONCLIENT | PRF_CHILDREN |
PRF_ERASEBKGND | PRF_OWNED );
return true;
#if 0
break;
case 3:
@ -292,12 +299,14 @@ void wxDrawWindowOnDC(wxWindow* window, const wxDC& dc, int method)
PRF_ERASEBKGND | PRF_OWNED );
}
}
#endif
#endif // 0
#else
return false;
#endif // __WXMSW__
}
%}
#endif
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------