Я пытаюсь разобраться в утверждающем, что я имею, когда я называюповедения COleDateTime при использовании максимальной даты
COleDateTime time;
this->m_wndDate.GetTime(time);
и датой в моем Datepicker является 31/12/9999 (ДД/ММ/YYYY) функция
BOOL CDateTimeCtrl::GetTime(_Out_ COleDateTime& timeDest) const
показывает мне ASSERT(timeDest.GetStatus() == COleDateTime::valid); (winctrl5.cpp, line 181)
, но в соответствии с документацией является действительной датой.
Я не могу понять, почему это происходит. Кто-нибудь сталкивался с этой проблемой раньше?
Заранее благодарен!
EDIT: Вызывается метод GetTime
, когда пользователь меняет DatePicker.
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATE, OnDatetimechangeDate)
...
void WDlgRelParamVar::OnDatetimechangeDate(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMDATETIMECHANGE pNMDATE = (LPNMDATETIMECHANGE)pNMHDR;
COleDateTime time;
this->m_wndDate.GetTime(time);
...
Ваш часовой пояс будет иметь аффект, пользователи SO * действительно * должны указать свою страну в своем профиле SO. Это может быть более недействительным после преобразования в UTC, как это делает COleDateTime. Сначала вы должны проверить перегрузку GetTime (LPSYSTEMTIME). –
@ HansPassant Я из Бразилии, поэтому UTC-03: 00, он только ударяет по утверждению, когда дата установлена на 31/12/9999, повлияет ли часовой пояс даже в этом случае? – Penachia
Вы работаете на XP? Какова версия Common Controls (check manifest)? –