1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/msw/statbmp.h
3// Purpose:     wxStaticBitmap class for wxMSW
4// Author:      Julian Smart
5// Modified by:
6// Created:     01/02/97
7// RCS-ID:      $Id: statbmp.h 51824 2008-02-16 01:59:21Z SN $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_STATBMP_H_
13#define _WX_STATBMP_H_
14
15#include "wx/control.h"
16#include "wx/icon.h"
17#include "wx/bitmap.h"
18
19extern WXDLLEXPORT_DATA(const wxChar) wxStaticBitmapNameStr[];
20
21// a control showing an icon or a bitmap
22class WXDLLEXPORT wxStaticBitmap : public wxStaticBitmapBase
23{
24public:
25    wxStaticBitmap() { Init(); }
26
27    wxStaticBitmap(wxWindow *parent,
28                   wxWindowID id,
29                   const wxGDIImage& label,
30                   const wxPoint& pos = wxDefaultPosition,
31                   const wxSize& size = wxDefaultSize,
32                   long style = 0,
33                   const wxString& name = wxStaticBitmapNameStr)
34    {
35        Init();
36
37        Create(parent, id, label, pos, size, style, name);
38    }
39
40    bool Create(wxWindow *parent,
41                wxWindowID id,
42                const wxGDIImage& label,
43                const wxPoint& pos = wxDefaultPosition,
44                const wxSize& size = wxDefaultSize,
45                long style = 0,
46                const wxString& name = wxStaticBitmapNameStr);
47
48    virtual ~wxStaticBitmap() { Free(); }
49
50    virtual void SetIcon(const wxIcon& icon) { SetImage(&icon); }
51    virtual void SetBitmap(const wxBitmap& bitmap) { SetImage(&bitmap); }
52    virtual wxBitmap GetBitmap() const;
53    virtual wxIcon GetIcon() const;
54
55    virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
56
57protected:
58    virtual wxBorder GetDefaultBorder() const;
59    virtual wxSize DoGetBestSize() const;
60
61    // ctor/dtor helpers
62    void Init() { m_isIcon = true; m_image = NULL; m_currentHandle = 0; }
63    void Free();
64
65    // true if icon/bitmap is valid
66    bool ImageIsOk() const;
67
68    void SetImage(const wxGDIImage* image);
69    void SetImageNoCopy( wxGDIImage* image );
70
71#if wxABI_VERSION >= 20808
72    // draw the bitmap ourselves here if the OS can't do it correctly (if it
73    // can we leave it to it)
74    void DoPaintManually(wxPaintEvent& event);
75#endif
76
77    // we can have either an icon or a bitmap
78    bool m_isIcon;
79    wxGDIImage *m_image;
80
81    // handle used in last call to STM_SETIMAGE
82    WXHANDLE m_currentHandle;
83
84private:
85    DECLARE_DYNAMIC_CLASS(wxStaticBitmap)
86    DECLARE_NO_COPY_CLASS(wxStaticBitmap)
87};
88
89#endif
90    // _WX_STATBMP_H_
91