1. 程式人生 > >windows遊戲程式設計 以PeekMessage為核心的訊息迴圈體系

windows遊戲程式設計 以PeekMessage為核心的訊息迴圈體系

BOOL PeekMessage(
LPMSG IpMsg,
HWND hWnd,
UINT wMSGfilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg

);

lpMsg 接收訊息資訊的MSG結構指標。 hWnd 其訊息被檢查的視窗控制代碼 wMsgFilterMin 指定被檢查的訊息範圍裡的第一個訊息。 wMsgFilterMax 指定被檢查的訊息範圍裡的最後一個訊息。 wRemoveMsg 確定訊息如何被處理。此引數可取下列值之一[1]
意義
PM_NOREMOVE PeekMessage處理後,訊息不從佇列裡除掉。
PM_REMOVE PeekMessage處理後,訊息從佇列裡除掉。
PM_NOYIELD 此標誌使系統不釋放等待呼叫程式空閒的執行緒。可將PM_NOYIELD隨意組合到PM_NOREMOVE或PM_REMOVE。

無論應用程式訊息佇列是否有訊息,PeekMessage函式都立即返回。

MSG msg = {0};

while(msg.message != WM_QUIT)

{

  if(PeekMessage(&msg,0,0,0,PM_REMOVE))

  {

    TranslateMessage(&msg);

    DispatchMessage(&msg);

  }

  else

   {

    Direct3d_Update(hwnd);

    Direct3d_Render(hwnd);

   }

}