我有一个对话框,其中有两个datetime控件,其格式设置为time。一个表示开始时间,另一个表示结束时间。
因此,我通过
SetTime()
功能。
我的问题是我正在初始化中的两个控件
OnInitDialog()
方法,但是
DoDataExchange()
是在
OnInitDialog()
here
如何首先初始化datetime控件?或者我可能没有正确地处理这个问题,或者我遗漏了什么?
:
BOOL CNewManualEntryDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_dtStartTime.SetRange(&GetTodayTimeMin(), &GetTodayTimeMax());
m_dtEndTime.SetRange(&GetTodayTimeMin(), &GetTodayTimeMax());
m_dtEndTime.SetTime(&SetEndTimeOneHourAhead());
return TRUE;
}
上面的函数只返回一个
CTime
对象。
作为参考,验证程序如下所示:
void CNewManualEntryDlg::TimePickerValidation(CDataExchange* pDX)
{
CTime startTime;
CTime endTime;
m_dtStartTime.GetTime(startTime);
m_dtEndTime.GetTime(endTime);
BOOL isStartTimeBehindEndTime = startTime > endTime;
CString errorMsg;
if (!isStartTimeBehindEndTime)
{
errorMsg += "Error - Start time cannot be ahead of end time\n";
}
if (!errorMsg.IsEmpty())
{
::AfxMessageBox(errorMsg);
pDX->Fail();
return;
}
}
我只是打电话过来
数据交换()
void CNewManualEntryDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDDT_STARTTIMEPICKER, m_dtStartTime);
DDX_Control(pDX, IDDT_ENDTIMEPICKER, m_dtEndTime);
TimePickerValidation(pDX);
}