PreTranslateMessage是
消息在送給TranslateMessage函數之前被調用的,絕大多數本窗口的消息都要通過這里,比較常用,當你需要在MFC之前處理某些消息時,常常要在這里添加代碼.
MFC消息控制流最具特色的地方是CWnd類的虛擬函數PreTranslateMessage(),通過重載這個函數,我們可以改變MFC的消息控制流程,甚至可以作一個全新的控制流出來。只有穿過消息隊列的消息才受PreTranslateMessage()影響,采用SendMessage()或其他類似的方式向窗口直接發送的而不經過消息隊列的消息根本不會理睬PreTranslateMessage()的存在。
一、是否調用TranslateMessage()和DispatchMessage()是由一個名稱為PreTranslateMessage()函數的返回值決定的,如果該函數返回TRUE,則不會把該消息分發給窗口函數處理。
二、傳給PreTranslateMessage()的消息是未經翻譯過的消息,它沒有經過TranslateMessage()處理??梢栽谠摵瘮抵惺褂?pMsg->wParam==VK_RETURN)來攔截回車鍵。
三、在WindowProc里不能處理WM_Char消息。
四、SetWindowText會發送WM_Char給窗口。
五、PeekMessage和GetMessage的區別:
GetMessage在沒有消息的時候等待消息,cpu當然低
PeekMessage沒有消息的時候立刻返回,可以在沒有消息的時候可以做其他處理,但cpu占用率一般較高。
大多游戲都用PeekMessage();
http://baike.baidu.com/view/1437305.htm