日历控件在改变时间时,响应了两次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(
"");  
}


posted on 2008-07-07 15:15 鱼香 阅读(1396) 评论(3)  编辑 收藏 引用

评论

# re: 日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题 2008-10-14 17:41 tanxs

这个问题还是没有解决,ASSERT(pCtrl != NULL); 语句时出现错误。能不能麻烦详细指点下?tanxs001@163.com~~
谢谢,  回复  更多评论   

# re: 日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题 2010-09-17 15:43 路人

还不错。。。  回复  更多评论   

# re: 日历控件在改变时间时,响应了两次DTN_DATETIMECHANGE的问题 2011-05-26 10:09 yangxiaoluck

其实完全没有你说的这么复杂,定义一个静态变量就行了。但是只要涉及静态变量的编程习惯都不太好  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2020年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜