代码如下:
void CAccuChekDlg::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//DWORD dwResult =m_starttime.GetTime(startm);
//strstartDate=startm.Format("%Y-%m-%d %H:%M:%S %W-%A");
//if (dwResult == GDT_VALID)
//{
// strstartDate=endtm.Format(_T("%Y-%m-%d"));
//}
//UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
CDateTimeCtrl* pDT =(CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER1);
assert(pDT);
if(pDT)
{
pDT->GetTime(startm);
}
strstartDate= startm.Format(_T("%Y-%m-%d"));
*pResult = 0;
}譬如我在弹出的日历框中选择的是2013-7-3,通过上述代码strstartDate转换后的时间确实“2013-08-15”
并且这个时间具有随机性,还曾出现“2004-05-17”等奇怪的时间,不明就里
只要用gettime和ctime.format()就会出现这个问题
并且DTN_DATETIMECHANGE具有两次消息响应的特点,第一次就能够获取值,第二次没有变化。
两次执行完后,变会看到非常讨厌的请问大家,对于获取datetimepicker控件中的日期的改变,有没简单有效的方法?
void CAccuChekDlg::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
//DWORD dwResult =m_starttime.GetTime(startm);
//strstartDate=startm.Format("%Y-%m-%d %H:%M:%S %W-%A");
//if (dwResult == GDT_VALID)
//{
// strstartDate=endtm.Format(_T("%Y-%m-%d"));
//}
//UpdateData(false);//用于将数据在屏幕中对应控件中显示出来。
CDateTimeCtrl* pDT =(CDateTimeCtrl*) GetDlgItem(IDC_DATETIMEPICKER1);
assert(pDT);
if(pDT)
{
pDT->GetTime(startm);
}
strstartDate= startm.Format(_T("%Y-%m-%d"));
*pResult = 0;
}譬如我在弹出的日历框中选择的是2013-7-3,通过上述代码strstartDate转换后的时间确实“2013-08-15”
并且这个时间具有随机性,还曾出现“2004-05-17”等奇怪的时间,不明就里
只要用gettime和ctime.format()就会出现这个问题
并且DTN_DATETIMECHANGE具有两次消息响应的特点,第一次就能够获取值,第二次没有变化。
两次执行完后,变会看到非常讨厌的请问大家,对于获取datetimepicker控件中的日期的改变,有没简单有效的方法?
因为习惯上加CHANGE类型的触发事件
按照你的说法,我先给控件关联CTime变量
UpdateData(TRUE);
strstartDate=startm.Format(_T("%Y-%m-%d"));
strendDate=endtm.Format(_T("%Y-%m-%d"));
结果strstartDate,strendDate为空;另外又试了下给控件关联CDateTimeCtrl类型
UpdateData(TRUE);
m_starttime.GetTime(startm);
m_endtime.GetTime(endtm);
strstartDate=startm.Format(_T("%Y-%m-%d"));
strendDate=endtm.Format(_T("%Y-%m-%d"));
执行第一个GetTime的时候,就出现上面的错误,郁闷啊,弄了一天了