1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/msw/checkbox.h
3// Purpose:     wxCheckBox class
4// Author:      Julian Smart
5// Modified by:
6// Created:     01/02/97
7// RCS-ID:      $Id: checkbox.h 37393 2006-02-08 21:47:09Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_CHECKBOX_H_
13#define _WX_CHECKBOX_H_
14
15// Checkbox item (single checkbox)
16class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase
17{
18public:
19    wxCheckBox() { }
20    wxCheckBox(wxWindow *parent,
21               wxWindowID id,
22               const wxString& label,
23               const wxPoint& pos = wxDefaultPosition,
24               const wxSize& size = wxDefaultSize,
25               long style = 0,
26               const wxValidator& validator = wxDefaultValidator,
27               const wxString& name = wxCheckBoxNameStr)
28    {
29        Create(parent, id, label, pos, size, style, validator, name);
30    }
31
32    bool Create(wxWindow *parent,
33                wxWindowID id,
34                const wxString& label,
35                const wxPoint& pos = wxDefaultPosition,
36                const wxSize& size = wxDefaultSize,
37                long style = 0,
38                const wxValidator& validator = wxDefaultValidator,
39                const wxString& name = wxCheckBoxNameStr);
40
41    virtual void SetValue(bool value);
42    virtual bool GetValue() const;
43
44    // override some base class virtuals
45    virtual bool MSWCommand(WXUINT param, WXWORD id);
46    virtual void Command(wxCommandEvent& event);
47    virtual bool SetForegroundColour(const wxColour& colour);
48    virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item);
49
50protected:
51    virtual wxSize DoGetBestSize() const;
52
53    virtual void DoSet3StateValue(wxCheckBoxState value);
54    virtual wxCheckBoxState DoGet3StateValue() const;
55
56    // make the checkbox owner drawn or reset it to normal style
57    void MakeOwnerDrawn(bool ownerDrawn);
58
59    // return true if this checkbox is owner drawn
60    bool IsOwnerDrawn() const;
61
62private:
63    // common part of all ctors
64    void Init();
65
66    // event handlers used by owner-drawn checkbox
67    void OnMouseEnterOrLeave(wxMouseEvent& event);
68    void OnMouseLeft(wxMouseEvent& event);
69    void OnFocus(wxFocusEvent& event);
70
71
72    // current state of the checkbox
73    wxCheckBoxState m_state;
74
75    // true if the checkbox is currently pressed
76    bool m_isPressed;
77
78    // true if mouse is currently over the control
79    bool m_isHot;
80
81
82    DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckBox)
83};
84
85#endif
86    // _WX_CHECKBOX_H_
87