诡异问题。日历控件读不到修改后的值,请大家看看

mfc界面,一个对话框放了个DateTimePicker控件,重新选择了日期后,
通过updata(true),代码中对应变量的值确不是新的日期。

提供一些代码片段:
……
CTime m_Date1; // 类成员
……
DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_Date1); // 控件与变量的映射
……
{
UpdateData(TRUE);// 刷新界面值到变量中

Cstring strDateFrom = m_Date1.Format("%Y-%m-%d");// 这里看的值还是界面选择前的老日期
}

重要说明:
此代码之前运行一直没有问题,更新了mfc的一些dll库文件后,出现这个问题的。
原来用的是1998年版的,后来有些文件更新至2004版了,就出现这个问题了。
客户要求用新库,所以不考虑旧库了。

作者: gaodj9999   发布时间: 2011-06-15

定义m_Date1为控件变量。
用 m_Date1.GetTime函数取
BOOL GetTime(COleDateTime& timeDest) const;
DWORD GetTime(CTime& timeDest) const;
DWORD GetTime(LPSYSTEMTIME pTimeDest) const;

返回值:
第一个版本中,如果写COleDateTime对象成功,则返回非零值,否则为0。在第二和第三个版本中,DWORD值等于NMDATETIME CHANGE结构中设置的dwFlag成员。有关的更多信息,请参阅下面的说明。

参数: timeDest 第一个版本中是对接收系统时间信息的COleDateTime对象的参考。第二个版本中是对接收系统时间信息的CTime对象的参考。  
pTimeDest 指向接收系统时间信息的SYSTEMTIME结构的指针。不能为NULL。  

作者: johnroot   发布时间: 2011-06-15

DDX_Control(pDX, IDC_DATETIMEPICKER1, m_Date1);

作者: johnroot   发布时间: 2011-06-15

CDateTimeCtrl m_Date1;

作者: johnroot   发布时间: 2011-06-15