Add a SetDoubleBuffered method for wxMSW (XP+)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2008-06-02 18:30:13 +00:00
parent ae8eee38f4
commit f60ca3e24c
2 changed files with 25 additions and 8 deletions

View File

@@ -4257,17 +4257,32 @@ bool wxWindowMSW::HandlePower(WXWPARAM WXUNUSED_IN_WINCE(wParam),
bool wxWindowMSW::IsDoubleBuffered() const
{
for ( const wxWindowMSW *wnd = this;
wnd && !wnd->IsTopLevel(); wnd =
wnd->GetParent() )
{
if ( ::GetWindowLong(GetHwndOf(wnd), GWL_EXSTYLE) & WS_EX_COMPOSITED )
const wxWindowMSW *wnd = this;
do {
long style = ::GetWindowLong(GetHwndOf(wnd), GWL_EXSTYLE);
if ( (style & WS_EX_COMPOSITED) != 0 )
return true;
}
wnd = wnd->GetParent();
} while ( wnd && !wnd->IsTopLevel() );
return false;
}
void wxWindowMSW::SetDoubleBuffered(bool on)
{
// Get the current extended style bits
long exstyle = ::GetWindowLong(GetHwnd(), GWL_EXSTYLE);
// Twiddle the bit as needed
if ( on )
exstyle |= WS_EX_COMPOSITED;
else
exstyle &= ~WS_EX_COMPOSITED;
// put it back
::SetWindowLong(GetHwnd(), GWL_EXSTYLE, exstyle);
}
// ---------------------------------------------------------------------------
// owner drawn stuff
// ---------------------------------------------------------------------------