PeekMessage什么用啊?
和GetMessage是什么关系呢?

解决方案 »

  1.   

    PeekMessage 如果没有取到消息的话不会等待
    GetMessage 则会等到有消息
      

  2.   

    PeekMessage 返回 TRUE 的条件是有消息,如果没有消息返回 FALSE
    GetMessage 返回 TRUE 的条件是有消息且该消息不为 WM_QUIT
      返回 FALSE 的条件是有消息且不为 WM_QUITwhile (1) 
      PeekMessage(...); //会使 CPU 一直处于忙碌状态while (GetMessage()) 
    ;         // 不会使 CPU 一直被占用,没有消息时处于等待状态
      

  3.   

    非堵塞/堵塞对应PostMessage/SendMessage
      

  4.   

    while(1)
        {
            if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
            {
                if(!GetMessage(&msg, NULL, 0, 0 )) return msg.wParam;
                TranslateMessage(&msg); 
                DispatchMessage(&msg);
            }
            else if(bActive)
            { 
                Update();             // 翻转上一层缓冲区内容到屏幕。
                Screen->Flip();
            }
            else WaitMessage(); 
        }
    }那这样不是CPU占用率超高(97%),有什么用呢?
      

  5.   

    为什么会是CPU占用率超高?说说理由
      

  6.   

    呵呵,是DDraw里的代码么?
    这与 bActive 的赋值和 WaitMessage 的处理有关
      

  7.   

    因为会一直执行 WHY 循环