void CDemo1View::OnTttt()
{
// TODO: Add your command handler code here
// TimeOut是CDemo1View的一个成员变量
TimeOut = FALSE;
SetTimer(1, 1000, NULL);
for(;;)
{
if(TimeOut == TRUE)
break;
} MessageBox("This time out!");
}
void CDemo1View::OnTimer(UINT nIDEvent)
{ // TODO: Add your message handler code here and/or call default
TimeOut = TRUE;
KillTimer(1);
CScrollView::OnTimer(nIDEvent);
}执行OnTttt,程序就死在那,定时器不能响应?不知为何?
{
// TODO: Add your command handler code here
// TimeOut是CDemo1View的一个成员变量
TimeOut = FALSE;
SetTimer(1, 1000, NULL);
for(;;)
{
if(TimeOut == TRUE)
break;
} MessageBox("This time out!");
}
void CDemo1View::OnTimer(UINT nIDEvent)
{ // TODO: Add your message handler code here and/or call default
TimeOut = TRUE;
KillTimer(1);
CScrollView::OnTimer(nIDEvent);
}执行OnTttt,程序就死在那,定时器不能响应?不知为何?
也许把你的死循环换成一下代码就可以了:
MSG msg;
while(::GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
最好是
void CDemo1View::OnTttt()
{
// TODO: Add your command handler code here
// TimeOut是CDemo1View的一个成员变量
SetTimer(1, 1000, NULL);
}
void CDemo1View::OnTimer(UINT nIDEvent)
{ // TODO: Add your message handler code here and/or call default
KillTimer(1);
MessageBox("This time out!");
CScrollView::OnTimer(nIDEvent);
}
其实你要完成的功能就是在等设置的时间到了后,执行其他功能,比如说你的程序就是要做for循环里面的事,你完全可以放到OnTimer()里面去做
for(;;)
{
if(TimeOut == TRUE)
break;
}
然后就死循环了。
{
if(TimeOut == TRUE)
break;
}
在这里死循环了,你的程序是单线程的,所以TimeOut永远是FALSE,不可能成为TRUE
void CDemo1View::OnTimer(UINT nIDEvent)
{ // TODO: Add your message handler code here and/or call default
KillTimer(1);
MessageBox("This time out!");
CScrollView::OnTimer(nIDEvent);
}