当前位置: 代码迷 >> WinCE >> MCN_SELCHANGE讯息的触发
  详细解决方案

MCN_SELCHANGE讯息的触发

热度:264   发布时间:2016-04-28 11:51:39.0
MCN_SELCHANGE消息的触发
本帖最后由 fengwanfengwan 于 2015-06-01 16:45:50 编辑
系统平台是CE6.0,开发工具是VS2005。
碰到的问题是:当我的应用程序启动大概2分钟后,系统的时间会回到应用程序启动的那个时间。比如,12点钟启动程序,当12点02分的时候,系统时间又变成了12点。我检查了包含有 month calendar control 的那个设置时间的窗口,通过查看堆栈调用,发现每当出现这个问题的时候,该窗口都会处理一个“ON_NOTIFY”的消息,之后,该窗口会执行“MCN_SELCHANGE ”的响应事件。应用程序的部分代码如下:
void CSysDateTimeSetDlg::DoDataExchange( CDatExchange* pDX )
{
     ........
     DDX_Control( pDX, IDC_MONTHCALENDAR1, m_Calendar )
     DDX_Control( pDX, IDC_DATETIMEPICKER1,   m_Calendar ) 
     DDX_Control( pDX, IDC_DATETIMEPICKER2,   m_Calendar )
     ........
}

BEGIN_MESSAGE_MAP(......)
      ......
      ON_NOTIFY( MCN_SELCHANGE, IDC_MONTHCALENDAR1,&CSysDateTimeSetDlg::OnMcnSelchangeMonthcalendar1)
     ......

    我的理解是,只有人为对该控件的操作,才会触发MCN_SELCHANGE消息,但是在这里,系统为什么每隔2分钟左右,就触发MCN_SELCHANGE呢?
    还是说我的哪些操作会导致这种情况的发生?
------解决思路----------------------
引用:
问题是,当产生“MCN_SELCHANGE”消息时,我并没有操作 month calendar control 。
而且,此时,包含了该控件的窗口实际上是处于隐藏状态的。


LZ ,如你所说你是没有操作。但你的代码呢,或者其它因素呢?
只要触发了 MCN_SELCHANGE,无论是显式、还是隐式,触发了就是触发了。

其实,所谓的这个控件我没有用过,我只是按一般的问题分析来看待这个问题。请你去看看这个 MCN_SELCHANGE 事件的 MSDN 说明,不是只有你的操作才会引起 MCN_SELCHANGE 的。
  相关解决方案