| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/msw/calctrl.h
- // Purpose: wxCalendarCtrl control implementation for MSW
- // Author: Vadim Zeitlin
- // Copyright: (C) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_MSW_CALCTRL_H_
- #define _WX_MSW_CALCTRL_H_
- class WXDLLIMPEXP_ADV wxCalendarCtrl : public wxCalendarCtrlBase
- {
- public:
- wxCalendarCtrl() { Init(); }
- wxCalendarCtrl(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& date = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCAL_SHOW_HOLIDAYS,
- const wxString& name = wxCalendarNameStr)
- {
- Init();
- Create(parent, id, date, pos, size, style, name);
- }
- bool Create(wxWindow *parent,
- wxWindowID id,
- const wxDateTime& date = wxDefaultDateTime,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCAL_SHOW_HOLIDAYS,
- const wxString& name = wxCalendarNameStr);
- virtual bool SetDate(const wxDateTime& date);
- virtual wxDateTime GetDate() const;
- virtual bool SetDateRange(const wxDateTime& lowerdate = wxDefaultDateTime,
- const wxDateTime& upperdate = wxDefaultDateTime);
- virtual bool GetDateRange(wxDateTime *lowerdate, wxDateTime *upperdate) const;
- virtual bool EnableMonthChange(bool enable = true);
- virtual void Mark(size_t day, bool mark);
- virtual void SetHoliday(size_t day);
- virtual wxCalendarHitTestResult HitTest(const wxPoint& pos,
- wxDateTime *date = NULL,
- wxDateTime::WeekDay *wd = NULL);
- virtual void SetWindowStyleFlag(long style);
- protected:
- virtual wxSize DoGetBestSize() const;
- virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
- virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
- void MSWOnClick(wxMouseEvent& event);
- void MSWOnDoubleClick(wxMouseEvent& event);
- private:
- void Init();
- // bring the control in sync with m_marks
- void UpdateMarks();
- // set first day of week in the control to correspond to our
- // wxCAL_MONDAY_FIRST flag
- void UpdateFirstDayOfWeek();
- // reset holiday information
- virtual void ResetHolidayAttrs() { m_holidays = 0; }
- // redisplay holidays
- virtual void RefreshHolidays() { UpdateMarks(); }
- // current date, we need to store it instead of simply retrieving it from
- // the control as needed in order to be able to generate the correct events
- // from MSWOnNotify()
- wxDateTime m_date;
- // bit field containing the state (marked or not) of all days in the month
- wxUint32 m_marks;
- // the same but indicating whether a day is a holiday or not
- wxUint32 m_holidays;
- DECLARE_DYNAMIC_CLASS(wxCalendarCtrl)
- wxDECLARE_NO_COPY_CLASS(wxCalendarCtrl);
- };
- #endif // _WX_MSW_CALCTRL_H_
|