我的程序结构如下:
程序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.   

    现在有一个问题就是在程序运行时至少得给电脑发送一个MSG,延时才会继续运行,有什么办法能够让程序能够顺畅运行但又不影响系统的线程的运行啊??
    问题描述不清楚,能说得准确一点吗?
      

  2.   

    DWORD dwStart = GetTickCount();
    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
      

  3.   

    推荐使用PeekMessage而不是GetMessage
      

  4.   

    就是在程序运行时必须要移一下鼠标或者按下键盘,程序才会运行下去,否则一直停在  
    MSG  msg; 
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
    这里,等待MSG
    我是想让程序顺畅运行,但是系统的线程不能停,所以不能用sleep
      

  5.   

    void SoftDelay(unsigned int TickCount)
    {
           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);写掉了
      

  6.   

    解决了,就是PeekMessage,多谢了
    呵呵