TranslateMessage函數

TranslateMessage(&msg);
TranslateMessage是用來把快捷鍵消息轉換爲字符消息,並將轉換後的新消息投遞到調用線程的消息隊列中。
由於Windows對所有鍵盤編碼都是採用虛擬鍵的定義,這樣當按鍵按下時,並不得字符消息,需要鍵盤映射轉換爲字符的消息。字符消息被投遞到調用線程的消息隊列中,當下一次調用GetMessage函數時被取出。當我們敲擊鍵盤上的某個字符鍵時,系統將產生WM_KEYDOWN和WM_KEYUP消息。這兩個消息的附加參數(wParamlParam)包含的是虛擬鍵代碼和掃描碼等信息,而我們在程序中往往需要得到某個字符的ASCII碼,TranslateMessage這個函數就可以將WM_KEYDOWN和WM_ KEYUP消息的組合轉換爲一條WM_CHAR消息(該消息的wParam附加參數包含了字符的ASCII碼),並將轉換後的新消息投遞到調用線程的消息隊列中。注意,TranslateMessage函數並不會修改原有的消息,它只是產生新的消息並投遞到消息隊列中。

也就是說TranslateMessage會發現消息裏是否有字符鍵的消息,如果有字符鍵的消息,就會產生WM_CHAR消息,如果沒有就不會產生什麼消息
 
函數TranslateMessage聲明如下:
WINUSERAPI
BOOL
WINAPI
TranslateMessage(
    __in CONST MSG *lpMsg);
lpMsg是檢查需要轉換的消息。
發佈了28 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章