【发布时间】:2012-08-30 06:43:23
【问题描述】:
我有一个继承自 ClistCtrl 的类 ClistCtrlEx 类。
我加了
- ON_WM_TIMER() 到消息表
- OnTimer 功能
但在调用 SetTimer 函数程序之前,通过事件 id 45 接收 WM_TIMER 消息,当我调用 SetTimer 时根本不发送 WM_TIMER。
如何开始调试或解决问题?
【问题讨论】:
我有一个继承自 ClistCtrl 的类 ClistCtrlEx 类。
我加了
但在调用 SetTimer 函数程序之前,通过事件 id 45 接收 WM_TIMER 消息,当我调用 SetTimer 时根本不发送 WM_TIMER。
如何开始调试或解决问题?
【问题讨论】:
这篇知识库文章似乎很合适:PRB: OnTimer() Is Not Called Repeatedly for a List Control。
基本上,他们建议仅在事件 id 不是您的情况下调用默认处理程序,因为列表控件设置了自己的计时器,并且其 WM_TIMER 处理程序将 KillTimer() 而不管 id。
void CMyListCtrl::OnTimer(UINT nIDEvent)
{
if (nIDEvent == m_myTimerID)
{
// handle timer event
}
else
{
CListCtrl::OnTimer(nIDEvent);
}
}
【讨论】: