C++ -- TranslateMessage函式
TranslateMessage是用來把虛擬鍵訊息轉換為字元訊息。由於Windows對所有鍵盤編碼都是採用虛擬鍵的定義,這樣當按鍵按下時,並不得字元訊息,需要鍵盤對映轉換為字元的訊息。
TranslateMessage函式用於將虛擬鍵訊息轉換為字元訊息。字元訊息被投遞到呼叫執行緒的訊息佇列中,當下一次呼叫GetMessage函式時被取出。當我們敲擊鍵盤上的某個字元鍵時,系統將產生WM_KEYDOWN和WM_KEYUP訊息。這兩個訊息的附加引數(wParam和lParam)包含的是虛擬鍵程式碼和掃描碼等資訊,而我們在程式中往往需要得到某個字元的ASCII碼,TranslateMessage這個函式就可以將WM_KEYDOWN和WM_ KEYUP訊息的組合轉換為一條WM_CHAR訊息(該訊息的wParam附加引數包含了字元的ASCII碼),並將轉換後的新訊息投遞到呼叫執行緒的訊息佇列中。注意,TranslateMessage函式並不會修改原有的訊息,它只是產生新的訊息並投遞到訊息佇列中。
也就是說TranslateMessage會發現訊息裡是否有字元鍵的訊息,如果有字元鍵的訊息,就會產生WM_CHAR訊息,如果沒有就會產生什麼訊息。
函式TranslateMessage宣告如下:
WINUSERAPI
BOOL
WINAPI
TranslateMessage(
__in CONST MSG *lpMsg);
lpMsg是檢查需要轉換的訊息。
呼叫這個函式的例子如下:
#001 //主程式入口
#002 //
#003 // 蔡軍生 2007/07/19
#004 // QQ: 9073204
#005 //
#006 int APIENTRY _tWinMain(HINSTANCE hInstance,
#007 HINSTANCE hPrevInstance,
#008 LPTSTR lpCmdLine,
#009 int nCmdShow)
#010 {
#011 UNREFERENCED_PARAMETER(hPrevInstance);
#012 UNREFERENCED_PARAMETER(lpCmdLine);
#013
#014 //
#015 MSG msg;
#016 HACCEL hAccelTable;
#017
#018 // 載入全域性字串。
#019 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
#020 LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
#021 MyRegisterClass(hInstance);
#022
#023 // 應用程式初始化:
#024 if (!InitInstance (hInstance, nCmdShow))
#025 {
#026 return FALSE;
#027 }
#028
#029 hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));
#030
#031 // 訊息迴圈:
#032 BOOL bRet;
#033 while ( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
#034 {
#035 if (bRet == -1)
#036 {
#037 //處理出錯。
#038
#039 }
#040 else if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
#041 {
#042 TranslateMessage(&msg);
#043 DispatchMessage(&msg);
#044 }
#045 }
#046
#047 return (int) msg.wParam;
#048 }
#049
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8183550/viewspace-1241500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++函式C++函式
- 【C++】函式C++函式
- c++ Beep函式C++函式
- c++函式模板C++函式
- C++仿函式C++函式
- C++ Virtual函式C++函式
- C++ 建構函式和解構函式C++函式
- C++的函式和模板函式 (轉)C++函式
- C++的函式式革命C++函式
- C/C++—— C++中函式重寫和函式過載C++函式
- C++中函式指標與函式物件C++函式指標物件
- C++ 類建構函式和解構函式C++函式
- c++中訊息函式 -- GetMessage函式C++函式
- C++ replace() 函式用法C++函式
- C++中strlen函式C++函式
- C++解構函式C++函式
- C++函式過載C++函式
- c++ 函式指標C++函式指標
- C++之memset函式C++函式
- C++ 序列操作函式C++函式
- 【C++】建構函式C++函式
- C++ 虛擬函式C++函式
- C++建構函式C++函式
- C++虛擬函式C++函式
- C++筆記--函式C++筆記函式
- 函式回撥(C++)函式C++
- c++的remove函式C++REM函式
- C++(函式指標)C++函式指標
- C++靜態函式C++函式
- fill函式與memset函式的區別(c++)函式C++
- 函式指標使用c++類成員函式函式指標C++
- C++ 返回函式指標的函式C++函式指標
- C++回撥函式 用法C++函式
- C++ 函式 realloc 的用法C++函式
- C++之函式過載C++函式
- c++虛擬函式表C++函式
- C++逐字輸出函式C++函式
- C++的函式過載C++函式