我在程序开发中,一直感觉到如果Sleep中设置的时间长,我的程序半天就没有反应了,我需要一边延时,同时程序还能反映,感觉Sleep太不好用了!
我的程序需要很多计时器,我用的都是OnTimer,但是我感觉程序在运行过程中特别乱,我想不用OnTimer也能实现计时功能!大家给点意见,用什么方法可以代替Sleep和OnTimer的作用啊?
我的程序需要很多计时器,我用的都是OnTimer,但是我感觉程序在运行过程中特别乱,我想不用OnTimer也能实现计时功能!大家给点意见,用什么方法可以代替Sleep和OnTimer的作用啊?
最好是使用定时器 用 ontimer 让他流逝 指定的时间就行了啊
do
{
PeekMessage(&msg,NULL,0,0,PM_REMOVE); //转发消息
if (msg.message ==WM_QUIT)
return FALSE;
TranslateMessage(&msg);
DispatchMessage(&msg);
dwStop=GetTickCount();
}while(dwStop<dwStart);
void DoEvents(DWORD ms)
{
MSG msg;
int count=ms/100;
for(int i=0;i<count;i++)
{
while (PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Sleep(100);
}
}
并将Sleep(...);换成DoEvents(...);
你的目的只是让OnTimer()暂停一下执行,
你可以先定义一个变量:int a=0;//全局的,在OnTimer()外,
然后
void CMyQQDlg::OnTimer(UINT nIDEvent)
{
if(nIDEvent==1)//处理定时器1
{
if(a%1000==0)//当计数达到1000时再处理
//..do something here
a++;
}
CDialog::OnTimer(nIDEvent);
}
dwTime是等待的时间。