如果消息隊列里沒有消息的時候不讓Getmassage在Windows內(nèi)部等待,就是說想充分利用程序的所有時間,就應(yīng)該用peekmassage.
peekmessage是一個類似于Getmessage的函數(shù),區(qū)別在于當(dāng)消息隊列里有消息的時候,
Peekmessage取回消息,并在eax中返回非零值,沒有消息的時候它會直接返回,并在eax中返回零.
所以在返回非零值的時候,程序檢查消息是否是WM_QUIT,是則結(jié)束消息循環(huán),不是則用標(biāo)準(zhǔn)流程處理消息;返回零的時候,表示是空閑時間,程序就可以做其他工作了,但插入做其他工作的代碼執(zhí)行時間不能太長,以不超過10ms為好,否則會影響正常的消息處理,使窗口的反應(yīng)看起來很遲鈍.如果必須處理很長時間的工作,那么應(yīng)該將它們分成很多小部分處理,以便有足夠頻率用
Peekmessage來檢查消息.
peekmassage 比 Getmassage 多一個參數(shù).這個參數(shù)表示在取回消息以后,對消息隊列中的消息是否保留.當(dāng)這個參數(shù)是PM_REMOVE時,消息被取回的同時也被從消息隊列里刪除,而用PM_NOREMOVE的時候,被取回的消息不會從消息隊列中刪除,函數(shù)相當(dāng)于"偷看"了這條消息.