PreTranslateMessage

slateMessage是訊息在送給Tran slateMessage()影響,採用Sen slateMessage()的存在。

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();

相關詞條

相關搜尋

熱門詞條

聯絡我們