1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/msw/button.h
3// Purpose:     wxButton class
4// Author:      Julian Smart
5// Modified by:
6// Created:     01/02/97
7// RCS-ID:      $Id: button.h 37393 2006-02-08 21:47:09Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_BUTTON_H_
13#define _WX_BUTTON_H_
14
15// ----------------------------------------------------------------------------
16// Pushbutton
17// ----------------------------------------------------------------------------
18
19class WXDLLEXPORT wxButton : public wxButtonBase
20{
21public:
22    wxButton() { }
23    wxButton(wxWindow *parent,
24             wxWindowID id,
25             const wxString& label = wxEmptyString,
26             const wxPoint& pos = wxDefaultPosition,
27             const wxSize& size = wxDefaultSize,
28             long style = 0,
29             const wxValidator& validator = wxDefaultValidator,
30             const wxString& name = wxButtonNameStr)
31    {
32        Create(parent, id, label, pos, size, style, validator, name);
33    }
34
35    bool Create(wxWindow *parent,
36                wxWindowID id,
37                const wxString& label = wxEmptyString,
38                const wxPoint& pos = wxDefaultPosition,
39                const wxSize& size = wxDefaultSize,
40                long style = 0,
41                const wxValidator& validator = wxDefaultValidator,
42                const wxString& name = wxButtonNameStr);
43
44    virtual ~wxButton();
45
46    virtual void SetDefault();
47
48    // implementation from now on
49    virtual void Command(wxCommandEvent& event);
50    virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
51    virtual bool MSWCommand(WXUINT param, WXWORD id);
52
53    // coloured buttons support
54    virtual bool SetBackgroundColour(const wxColour &colour);
55    virtual bool SetForegroundColour(const wxColour &colour);
56
57    virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item);
58    virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
59
60private:
61    void MakeOwnerDrawn();
62
63protected:
64    // send a notification event, return true if processed
65    bool SendClickEvent();
66
67    // default button handling
68    void SetTmpDefault();
69    void UnsetTmpDefault();
70
71    // set or unset BS_DEFPUSHBUTTON style
72    static void SetDefaultStyle(wxButton *btn, bool on);
73
74    // usually overridden base class virtuals
75    virtual wxSize DoGetBestSize() const;
76
77private:
78    DECLARE_DYNAMIC_CLASS_NO_COPY(wxButton)
79};
80
81#endif
82    // _WX_BUTTON_H_
83