GetAyncKeystate

GetAsyncKeystate函式是用於主動檢測程式運行時某個按鍵的狀態, 及彈起或按下狀態, 函式聲明為SHORT GetAsyncKeyState( int vKey ); 其中vKey參數為按鍵的虛擬鍵碼, 若返回值非0, 則返回按鍵的狀態。

函式功能

該函式用於確定函式被調用時,相應按鍵是處於按下狀態,還是處於彈起狀態;並且按下此鍵前否調用過GetAsyncKeystate函式。

參數

vKey

:定義虛擬鍵碼(若有256個虛擬鍵碼)。欲獲得更多信息,參看Virtual_Key Codes。在Windows NT中可以使用左右鍵區分常量來定義某些鍵。欲獲得更多信息,參看備註部分。

返回值:若函式調用成功,返回值給出了自最後一次調用GetAsyncKeyState以來,指定的鍵是否處於按下狀態,並且確定了該鍵目前是按下或是被彈起。若最高位被置為1,則鍵被接下:若最低位被置為1,則該鍵在前次調用GetAsyncKeystate以來處於被接下的狀態。若另一進程或執行緒中的視窗擁有鍵盤焦點,則

返回值為零。

Windows 95:Windows 95不支持左右鍵區分常量,若用這些常量調用GetAsyncKeystate函式,則返回值為零。

備註

該函式支持滑鼠按鈕,但是,它檢查的不是物理按鈕映射到的邏輯按鈕的狀態,而實際物理按鈕的狀態。例如,函式調用GetAsyncKeystate(VK_LBUTTON)總是返回物理的滑鼠左按鈕的狀態,而不管該按鈕映射為邏輯上的左按鈕,可以調用GetsystemMetrics(SM_SWAPBUTON)來確定系統當前物理滑鼠按鈕與邏輯滑鼠按鈕的對應關係,當滑鼠按鈕被左右交換後,函式返回TRUE。

可以使用虛擬鍵碼常數VD_SHIFT,VK_CONTROL,VK_MENU作為vKey參數的值,這樣給出Shift Ctrl,AIt鍵的狀態,而不區分是左鍵還是右鍵。

Windows NT:可以使用如下的虛擬鍵碼常數作為vKey的值來區分左右鍵的情況:

VK_LSHIFT VK_RSHIFT;VW_LCONTROL VK_RCONTROL;VK_LMENU VK_RMENU

這些可區分的左右鍵常量僅當調用GetKeyboardState,SetKeyboardstate,GetAsyncKeyState,GetKeyState和MaPViruaIKey函式時才可用。

Windows CE:GetAsyncKeyState函式支持左右虛鍵常量,所以定義按下左鍵還是右鍵。這些常數是VKLSHIFT,VK_RSHIFT,VK_LCONTROL,VK_RCONTROL,VK_LMENU和VK_RMENU。

在WindowsCE中返回值的最低位是無效的,應當忽略。

GetAsyncKeystate將返回當前鍵的狀態,即使是另一進程或執行緒中的視窗擁有鍵盤焦點。

可以使用VK_LBUTTON虛擬鍵碼常量來確定觸模屏上筆尖的狀態(按下/彈起)。

速查

Windows NT:3.1及以上版本:Windows:95及以上版本:Windows CE:1.O及以上版本;頭檔案:winuser.h;庫檔案:user32.lib。

相關詞條

相關搜尋

熱門詞條

聯絡我們