CDatetimeCtrl的DTN_DATETIMECHANGE消息响应两次解决方法

参考:http://topic.csdn.net/t/20050526/12/4037045.html #6楼

背景:通过日历弹出框修改日期是,DTN_DATETIMECHANGE消息响应两次,需要只截获一次即可。


/*
@desc 
通过编辑框修改日期时,该方法被调用一次
通过弹出日历框修改日期时,该方法被调用两次
*/
void   CTestDlg::OnDatetimechangeDatetimepicker1(NMHDR*   pNMHDR,   LRESULT*   pResult)   

    LPNMDATETIMECHANGE pDTChange = reinterpret_cast<LPNMDATETIMECHANGE>(pNMHDR);    
    *pResult = 0;


    static bool bMoCalOk = true;
    
    //判断是否有CMonthCalCtrl,若有会发送两次Change,截第二次即可
    CMonthCalCtrl* pMoCalCtrl = m_CurTimeCtrl.GetMonthCalCtrl();
    if (pMoCalCtrl != NULL)
    {
        bMoCalOk = !bMoCalOk;
    }


    if (!bMoCalOk)
    {
        return;
    }
    
    //执行自己的代码
}

你可能感兴趣的:(null,日历)