bool wxCalendarCtrl::Create(wxWindow *parent, wxWindowID id, const wxDateTime& dt, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { if ( !wxMSWDateControls::CheckInitialization() ) return false; // we need the arrows for the navigation style |= wxWANTS_CHARS; // initialize the base class if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) ) return false; // create the native control: this is a bit tricky as we want to receive // double click events but the MONTHCAL_CLASS doesn't use CS_DBLCLKS style // and so we create our own copy of it which does static ClassRegistrar s_clsMonthCal; if ( !s_clsMonthCal.IsInitialized() ) { // get a copy of standard class and modify it WNDCLASS wc; if ( ::GetClassInfo(NULL, MONTHCAL_CLASS, &wc) ) { wc.lpszClassName = wxT("_wx_SysMonthCtl32"); wc.style |= CS_DBLCLKS; s_clsMonthCal.Register(wc); } else { wxLogLastError(wxT("GetClassInfoEx(SysMonthCal32)")); } } const wxChar * const clsname = s_clsMonthCal.IsRegistered() ? static_cast<const wxChar*>(s_clsMonthCal.GetName().t_str()) : MONTHCAL_CLASS; if ( !MSWCreateControl(clsname, wxEmptyString, pos, size) ) return false; // initialize the control UpdateFirstDayOfWeek(); SetDate(dt.IsValid() ? dt : wxDateTime::Today()); SetHolidayAttrs(); UpdateMarks(); Bind(wxEVT_LEFT_DOWN, &wxCalendarCtrl::MSWOnClick, this); Bind(wxEVT_LEFT_DCLICK, &wxCalendarCtrl::MSWOnDoubleClick, this); return true; }
void wxCalendarCtrl::SetWindowStyleFlag(long style) { const bool hadMondayFirst = WeekStartsOnMonday(); wxCalendarCtrlBase::SetWindowStyleFlag(style); if ( WeekStartsOnMonday() != hadMondayFirst ) UpdateFirstDayOfWeek(); }
void wxCalendarCtrl::SetWindowStyleFlag(long style) { const bool hadMondayFirst = HasFlag(wxCAL_MONDAY_FIRST); wxCalendarCtrlBase::SetWindowStyleFlag(style); if ( HasFlag(wxCAL_MONDAY_FIRST) != hadMondayFirst ) UpdateFirstDayOfWeek(); }