// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
-// Licence: wxWidgets licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_CHECKBOX_H_
#define _WX_CHECKBOX_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "checkbox.h"
-#endif
-
// Checkbox item (single checkbox)
-class WXDLLEXPORT wxCheckBox : public wxCheckBoxBase
+class WXDLLIMPEXP_CORE wxCheckBox : public wxCheckBoxBase
{
public:
wxCheckBox() { }
virtual void SetValue(bool value);
virtual bool GetValue() const;
+ // override some base class virtuals
virtual void SetLabel(const wxString& label);
virtual bool MSWCommand(WXUINT param, WXWORD id);
virtual void Command(wxCommandEvent& event);
+ virtual bool SetForegroundColour(const wxColour& colour);
+ virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item);
+
+ // returns true if the platform should explicitly apply a theme border
+ virtual bool CanApplyThemeBorder() const { return false; }
+
+ // make the checkbox owner drawn or reset it to normal style
+ void MSWMakeOwnerDrawn(bool ownerDrawn);
+
+ // implementation only from now on
+ virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const;
protected:
- virtual wxSize DoGetBestSize() const;
+ virtual wxSize DoGetBestClientSize() const;
virtual void DoSet3StateValue(wxCheckBoxState value);
-
virtual wxCheckBoxState DoGet3StateValue() const;
+ // return true if this checkbox is owner drawn
+ bool IsOwnerDrawn() const;
+
private:
+ // common part of all ctors
+ void Init();
+
+ // event handlers used by owner-drawn checkbox
+ void OnMouseEnterOrLeave(wxMouseEvent& event);
+ void OnMouseLeft(wxMouseEvent& event);
+ void OnFocus(wxFocusEvent& event);
+
+
+ // current state of the checkbox
+ wxCheckBoxState m_state;
+
+ // true if the checkbox is currently pressed
+ bool m_isPressed;
+
+ // true if mouse is currently over the control
+ bool m_isHot;
+
+
DECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckBox)
};