为什么在MFC中接收错误的消息而不是计时器消息

why receive wrong message in MFC instead of timer message?

本文关键字:消息 计时器 错误 MFC 为什么      更新时间:2023-10-16

我有一个从ClistCtrl继承的类ClistCtrlEx类。

我添加

  • ON_WM_TIMER()到消息表
  • OnTimer功能

但在调用SetTimer函数程序之前,通过事件id 45接收WM_。

如何开始调试或解决问题?

这篇KB文章似乎很合适:对于列表控件,PRB:OnTimer()不是重复调用的。

基本上,他们建议只在事件id不是您的情况下调用默认处理程序,因为列表控件设置了自己的计时器,其WM_timer处理程序将KillTimer(),而与id无关。

void CMyListCtrl::OnTimer(UINT nIDEvent)
{
   if (nIDEvent == m_myTimerID)
   {
       // handle timer event
   }
   else
   {
      CListCtrl::OnTimer(nIDEvent);
   }
}