使用最大日期时的COleDateTime行为

时间:2016-11-07 12:18:29

标签: c++ mfc

我试图了解我打电话时遇到的ASSERT

COleDateTime time;
this->m_wndDate.GetTime(time);

和我的datePicker中的日期是31/12/9999(格式DD / MM / YYYY)函数

BOOL CDateTimeCtrl::GetTime(_Out_ COleDateTime& timeDest) const

向我显示ASSERT(timeDest.GetStatus() == COleDateTime::valid); (winctrl5.cpp, line 181),但相应于文档,它是有效日期。

我无法理解为什么会这样。有没有人以前遇到过这个问题?

提前致谢!

编辑:当用户更改DatePicker时,会调用方法GetTime

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);
    ...

1 个答案:

答案 0 :(得分:0)

在您调用GetTime()时,看起来似乎没有正确初始化DateTime选择器控件。

尝试运行以下代码段,看它是否按预期工作:

COleDateTime dt(9999, 12, 31, 23, 59, 59);
COleDateTime::DateTimeStatus st = dt.GetStatus();
ASSERT(st == COleDateTime::valid);

您尚未提供设置日期时间选择器输入格式的代码。您需要使用m_wndDate.SetFormat(_T("dd/MM/yyyy"));来设置格式。请注意它区分大小写。所以您的格式 DD / MM / YYYY错误