windows遊戲程式設計 以PeekMessage為核心的訊息迴圈體系
阿新 • • 發佈:2019-02-09
BOOL PeekMessage(
LPMSG IpMsg,
HWND hWnd,
UINT wMSGfilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg
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);
}
}