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