cd95f7e65c
This method provides a simple way to set a background bitmap without defining an EVT_ERASE_BACKGROUND handler and, more importantly, one that works correctly in wxMSW for a window with children as it paints the background of transparent children too. Add a test of this method to the erase sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
93 lines
2.7 KiB
C++
93 lines
2.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/panel.h
|
|
// Purpose: Base header for wxPanel
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created:
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
// Licence: wxWindows Licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_PANEL_H_BASE_
|
|
#define _WX_PANEL_H_BASE_
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers and forward declarations
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "wx/window.h"
|
|
#include "wx/containr.h"
|
|
|
|
class WXDLLIMPEXP_FWD_CORE wxControlContainer;
|
|
|
|
extern WXDLLIMPEXP_DATA_CORE(const char) wxPanelNameStr[];
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxPanel contains other controls and implements TAB traversal between them
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxPanelBase : public wxWindow
|
|
{
|
|
public:
|
|
wxPanelBase();
|
|
|
|
// Derived classes should also provide this constructor:
|
|
/*
|
|
wxPanelBase(wxWindow *parent,
|
|
wxWindowID winid = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
|
|
const wxString& name = wxPanelNameStr);
|
|
*/
|
|
|
|
// Pseudo ctor
|
|
bool Create(wxWindow *parent,
|
|
wxWindowID winid = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
|
|
const wxString& name = wxPanelNameStr);
|
|
|
|
|
|
// Use the given bitmap to tile the background of this panel. This bitmap
|
|
// will show through any transparent children.
|
|
//
|
|
// Notice that you must not prevent the base class EVT_ERASE_BACKGROUND
|
|
// handler from running (i.e. not to handle this event yourself) for this
|
|
// to work.
|
|
void SetBackgroundBitmap(const wxBitmap& bmp)
|
|
{
|
|
DoSetBackgroundBitmap(bmp);
|
|
}
|
|
|
|
|
|
// implementation from now on
|
|
// --------------------------
|
|
|
|
virtual void InitDialog();
|
|
|
|
WX_DECLARE_CONTROL_CONTAINER();
|
|
|
|
protected:
|
|
virtual void DoSetBackgroundBitmap(const wxBitmap& bmp) = 0;
|
|
|
|
private:
|
|
wxDECLARE_EVENT_TABLE();
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxPanelBase);
|
|
};
|
|
|
|
#if defined(__WXUNIVERSAL__)
|
|
#include "wx/univ/panel.h"
|
|
#elif defined(__WXMSW__)
|
|
#include "wx/msw/panel.h"
|
|
#else
|
|
#define wxHAS_GENERIC_PANEL
|
|
#include "wx/generic/panelg.h"
|
|
#endif
|
|
|
|
#endif // _WX_PANELH_BASE_
|