我的程序结构如下:
程序1;
delay;
程序2;
delay;
....
我用的延时程序是
void SoftDelay(unsigned int TickCount)
{
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <TickCount);
}
现在有一个问题就是在程序运行时至少得给电脑发送一个MSG,延时才会继续运行,有什么办法能够让程序能够顺畅运行但又不影响系统的线程的运行啊??
程序1;
delay;
程序2;
delay;
....
我用的延时程序是
void SoftDelay(unsigned int TickCount)
{
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <TickCount);
}
现在有一个问题就是在程序运行时至少得给电脑发送一个MSG,延时才会继续运行,有什么办法能够让程序能够顺畅运行但又不影响系统的线程的运行啊??
问题描述不清楚,能说得准确一点吗?
DWORD dwEnd = 0;
MSG msg;
do
{
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
} dwEnd = GetTickCount();
dwEnd -= dwStart;
}while(dwEnd < dwDelay);
上面的代码完全好用,你可以参照一下。估计你缺少PeekMessage或者GetMessage
MSG msg;
TranslateMessage(&msg);
DispatchMessage(&msg);
这里,等待MSG
我是想让程序顺畅运行,但是系统的线程不能停,所以不能用sleep
{
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount()-dwStart;
}while(dwEnd <TickCount);
}
不好意思,把GetMessage(&msg,NULL,0,0);写掉了
呵呵