函式功能
函式功能:該函式將指定的虛擬鍵碼和鍵盤狀態翻譯為相應的字元或字元串。該函式使用由給定的鍵盤布局句柄標識的物理鍵盤布局和輸入語言來翻譯代碼。
函式原型:int ToAscii(UINT uVirtKey,UINT uScanCode;PBYTE lpKeyState,LPWORD lpChar,UINT uFlags);
參數說明
參數:
nVirtkey:指定要翻譯的虛擬鍵碼。
uScanCode:定義被翻譯鍵的硬體掃描碼。若該鍵處於up狀態,則該值的最高位被設定。
LpKeyState:指向包含當前鍵盤狀態的一個256位元組數組。數組的每個成員包含一個鍵的狀態。若某位元組的最高位被設定,則該鍵處於down狀態。若最低位被設定,則表明該鍵被觸發。在此函式中,僅有Capslock鍵的觸發位是相關的。NumloCk和scroll loCk鍵的觸髮狀態將被忽略。
LpChar:指向接受翻譯所得字元或字元串的緩衝區。
UFlags:定義一個選單是否處於激活狀態。若一選單是活動的,則該參數為1,否則為0。
返回值:若定義的鍵為死鍵,則返回值為負值。否則,返回值應為如下的值:
O:對於當前鍵盤狀態,所定義的虛擬鍵沒有翻譯。
1:一個字元被拷貝到緩衝區。
2:兩個字元被拷貝到緩衝區。當一個存儲在鍵盤布局中的死鍵(重音或雙音字元)無法與所定義的虛擬鍵形成一個單字元時,通常會返回該值。
備註:若鍵盤布局中原先存放了一個死鍵,則提供給ToAscii函式的參數可能不足以翻譯虛擬鍵碼。
典型地,ToAscii函式執行基於虛擬鍵碼的翻譯。然而,在某些情況下,uScanCode參數的第15位可能被用來區分一個鍵的按下狀態和釋放狀態。掃描碼用於翻譯Alt+數字鍵的鍵組合。
儘管NUMLOCK事實影響鍵盤狀態的觸發鍵,TOAscii將忽略lpKeyState的觸發設定(VK_NUMLOCK),因為僅uVirtKey參數就足以區分游標移動鍵(VL_HOME,INSERT,等等)和數字鍵(VK_DECIMAL,VK_NUMPADO_VK_NUMPAD9)。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Wiodows CE:不支持;頭檔案:Winuser.h;庫檔案:user32.lib。