while(peekMessage(hwnd,&msg,........))
{}

解决方案 »

  1.   

    while(peekMessage(hwnd,&msg,........))
    {
      TRANSLATEMESSAGE();
      DISPATCHMESSAGE()
    }
      

  2.   

    也可用 createthread 新建一个线程
      

  3.   

    在循环中插入:
    MSG message;
    while(::PeekMessage(&message, NULL, 0, 0, PM_REMOVE))
    {
      ::TranslateMessage(&message);
      ::DispatchMessage(&message);
    }可以的话,也可以把循环放在一个新的线程中运行。
      

  4.   

    Create a work thread 做循环工作;
      

  5.   

    void CMyWnd::DelayTime(float count)
    {
    int I = 0;
    AfxLockTempMaps();
    SetTimer(2, count * 1000, NULL);
    for (;;)
    {
    MSG msg;
    VERIFY(::GetMessage(&msg, NULL, 0, 0)); switch (msg.message)
    {
    case WM_TIMER:
    {
    if (I == 1)
    {
    KillTimer(2);
    goto loop;
    }
    I ++;
    }
    break;
    case WM_MOUSEMOVE:
    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_CHAR:
    case WM_KEYDOWN:
    case WM_KILLFOCUS:
    break; default:
    DispatchMessage(&msg);
    break;
    }
    }loop:
    AfxUnlockTempMaps(FALSE);
    }
      

  6.   

    你设一个时钟SetTimer(...);
    在OnTimer(...)处理你要做的事不就可以了,
    有必要的话可以加一些计数器或标志变量,
    为何要用什么空循环呢?