一个类似孙鑫老师视频里的例子:定义一个整型变量:
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函数只被执行了两次,然后就再也不执行了,请大家帮忙看看是怎么回事另外还有个问题,我想在另一个函数中对定时器进行清零,要用什么函数?
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函数只被执行了两次,然后就再也不执行了,请大家帮忙看看是怎么回事另外还有个问题,我想在另一个函数中对定时器进行清零,要用什么函数?
我的程序用了拆分窗口,不知道是不是这个问题导致定时器失效
另外谢谢楼上几位
如果不调用CListView::OnTimer(nIDEvent)
那该在什么地方写响应函数?
就算写了OnTimer(nIDEvent),那为什么前两次能响应呢?
匪夷所思