bbcf2821a1
wxCustomBackgroundWindow is a new class allowing to set a custom bitmap for the background of any window. The relevant code was mostly moved from wxPanel to which it was added only recently (before 2.9.2) making it unnecessary to preserve compatibility. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/custombgwin.h
|
|
// Purpose: wxMSW implementation of wxCustomBackgroundWindow
|
|
// Author: Vadim Zeitlin
|
|
// Created: 2011-10-10
|
|
// RCS-ID: $Id: wxhead.h,v 1.12 2010-04-22 12:44:51 zeitlin Exp $
|
|
// Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_MSW_CUSTOMBGWIN_H_
|
|
#define _WX_MSW_CUSTOMBGWIN_H_
|
|
|
|
#include "wx/bitmap.h"
|
|
#include "wx/brush.h"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxCustomBackgroundWindow
|
|
// ----------------------------------------------------------------------------
|
|
|
|
template <class W>
|
|
class wxCustomBackgroundWindow : public W,
|
|
public wxCustomBackgroundWindowBase
|
|
{
|
|
public:
|
|
typedef W BaseWindowClass;
|
|
|
|
wxCustomBackgroundWindow() { m_backgroundBrush = NULL; }
|
|
|
|
virtual ~wxCustomBackgroundWindow() { delete m_backgroundBrush; }
|
|
|
|
protected:
|
|
virtual void DoSetBackgroundBitmap(const wxBitmap& bmp)
|
|
{
|
|
delete m_backgroundBrush;
|
|
m_backgroundBrush = bmp.IsOk() ? new wxBrush(bmp) : NULL;
|
|
|
|
// Our transparent children should use our background if we have it,
|
|
// otherwise try to restore m_inheritBgCol to some reasonable value: true
|
|
// if we also have non-default background colour or false otherwise.
|
|
BaseWindowClass::m_inheritBgCol = bmp.IsOk()
|
|
|| BaseWindowClass::UseBgCol();
|
|
}
|
|
|
|
virtual WXHBRUSH MSWGetCustomBgBrush()
|
|
{
|
|
if ( m_backgroundBrush )
|
|
return (WXHBRUSH)m_backgroundBrush->GetResourceHandle();
|
|
|
|
return BaseWindowClass::MSWGetCustomBgBrush();
|
|
}
|
|
|
|
wxBrush *m_backgroundBrush;
|
|
|
|
wxDECLARE_NO_COPY_TEMPLATE_CLASS(wxCustomBackgroundWindow, W);
|
|
};
|
|
|
|
#endif // _WX_MSW_CUSTOMBGWIN_H_
|