一个类似孙鑫老师视频里的例子:定义一个整型变量:
m_nCount=0;在View类的OnCreate()中创建了定时器:
int CRCMMPView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1; // TODO:  在此添加您专用的创建代码 //创建定时器
SetTimer(1,100,NULL); return 0;
}响应OnTimer:
void CRCMMPView::OnTimer(UINT nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值

m_nCount+=10; CClientDC dc(this);
CString str="[email protected]";
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
CRect rect;
rect.left=0;
rect.top=200;
rect.right=m_nCount;
rect.bottom=rect.top+tm.tmHeight; dc.SetTextColor(RGB(255,0,0));
dc.DrawText(str,&rect,DT_LEFT);

CListView::OnTimer(nIDEvent);
}结果OnTimer函数只被执行了两次,然后就再也不执行了,请大家帮忙看看是怎么回事另外还有个问题,我想在另一个函数中对定时器进行清零,要用什么函数?

解决方案 »

  1.   

    CListView::OnTimer(nIDEvent);我觉得这里有问题吧
      

  2.   

    问题解决了,我试着把SetTimer放到MainFrame里,并在MainFrame里响应OnTimer,然后在OnTimer里再发送自定义消息到CRCMMPView类响应,这样挺麻烦的,有人知道原因么?
    我的程序用了拆分窗口,不知道是不是这个问题导致定时器失效
    另外谢谢楼上几位
      

  3.   

    CListView里面有自己的定时器响应。你可以不调用 CListView::OnTimer(nIDEvent);  试试看。
      

  4.   

    Mackz(在相互)
    如果不调用CListView::OnTimer(nIDEvent)
    那该在什么地方写响应函数?
    就算写了OnTimer(nIDEvent),那为什么前两次能响应呢?
    匪夷所思