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;
if ( !MSWCreateControl(clsname, wxEmptyString, pos, size) )
return false;
+ // initialize the control
+ UpdateFirstDayOfWeek();
+
SetDate(dt.IsValid() ? dt : wxDateTime::Today());
UpdateMarks();
+ Connect(wxEVT_LEFT_DOWN,
+ wxMouseEventHandler(wxCalendarCtrl::MSWOnClick));
Connect(wxEVT_LEFT_DCLICK,
wxMouseEventHandler(wxCalendarCtrl::MSWOnDoubleClick));
return styleMSW;
}
-// TODO: handle WM_WININICHANGE
+void wxCalendarCtrl::SetWindowStyleFlag(long style)
+{
+ const bool hadMondayFirst = HasFlag(wxCAL_MONDAY_FIRST);
+
+ wxCalendarCtrlBase::SetWindowStyleFlag(style);
+
+ if ( HasFlag(wxCAL_MONDAY_FIRST) != hadMondayFirst )
+ UpdateFirstDayOfWeek();
+}
// ----------------------------------------------------------------------------
// wxCalendarCtrl geometry
// ----------------------------------------------------------------------------
+// TODO: handle WM_WININICHANGE
wxSize wxCalendarCtrl::DoGetBestSize() const
{
RECT rc;
{
MONTHDAYSTATE states[3];
const int nMonths = MonthCal_GetMonthRange(GetHwnd(), GMR_DAYSTATE, NULL);
- wxCHECK_RET( nMonths <= WXSIZEOF(states), "unexpected months range" );
+ wxCHECK_RET( nMonths <= (int)WXSIZEOF(states), "unexpected months range" );
for ( int i = 0; i < nMonths; i++ )
states[i] = m_marks;
}
}
+void wxCalendarCtrl::UpdateFirstDayOfWeek()
+{
+ MonthCal_SetFirstDayOfWeek(GetHwnd(), HasFlag(wxCAL_MONDAY_FIRST) ? 0 : 6);
+}
+
// ----------------------------------------------------------------------------
// wxCalendarCtrl events
// ----------------------------------------------------------------------------
event.Skip();
}
+void wxCalendarCtrl::MSWOnClick(wxMouseEvent& event)
+{
+ // for some reason, the control doesn't get focus on its own when the user
+ // clicks in it
+ SetFocus();
+
+ event.Skip();
+}
+
#endif // wxUSE_CALENDARCTRL