日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题

日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题

在使用Date Time Picker控件时需要响应日期改变的事件,这才发现如果是使用弹出的日期列表选中的时间,这个响应函数会进入两次。正纳闷中在CSDN搜索到这个问题的一个解法,很实用。通过这段代码也大概可以了解到为什么MFC会调用它两次了。


void CXXXOLEDlg::OnDatetimechangeDateFrom(NMHDR* pNMHDR, LRESULT* pResult)
{   
  *pResult = 0;

 
static    BOOL   bOK = TRUE;  
  
#if    1 // 判断是否有CMonthCalCtrl,若有会发送两次Change,截第二次即可  
        CDateTimeCtrl
*    pCtrl    =    (CDateTimeCtrl * )   GetDlgItem(IDC_DATETIMEPICKER1);  
        ASSERT(pCtrl   
!=    NULL);  
        CMonthCalCtrl
*    pMoCalCtrl    =    pCtrl -> GetMonthCalCtrl();  
        
if (pMoCalCtrl    !=    NULL)  
        bOK   
=     ! bOK;  
  
#endif   
        
if (bOK)  
              AfxMessageBox(
"" );  
}


你可能感兴趣的:(日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题)