?? untitled-36.txt
字號:
同鼠標消息一樣,有關Shift和Ctrl鍵狀態的信息也沒有編人鍵盤消息,因此Windows提供了
:: GetKeystate函數。給定一個虛擬鍵代碼,:: GetKeystate將報告所詢問的鍵是否被接下。
表達式
::GetKeystate(VK.SHIFT)
返回負值說明Shift鍵被按下,否則返回非負值。同樣,表達式
::GetKeystate(VK.CONTROL)
在Ctrl鍵是按下時,返回負值。因此,下列從onKeyDown處理程序取出的代碼段落中加括號
語句只有當Ctrl-Inft鍵(Ctrl鍵與左箭頭鍵組合)被接下時才執行:
。f《"Char== VK.LEFT)&&(::GetKeystate(VK.CONTROL)< O》 {
S
要查詢 Aft鍵,可以用 VK.MENU參數調用::GetKeystate,或簡單地在 "Flags參數中檢查
上下文代碼位。通常這些工作也不是必要的,因為如果Aft鍵被按下,窗口將接收到WM一
SYSKEYDOWN或WM.SYSKEYUP消息而不是WM—KEYDOWN或WM.KEYUP消息。也就
是說,消息ID通常會告訴您所需要知道的有關Aft鍵的一切信息。另外,還可以與
:: GetKeystate一起使用標識符 VK—LBUrtON、VK—MBUTTON以及 VK.RBUTTON來確定是否
有鼠標鍵被接下了。
應用程序也可以使用:: GetKeystate來確定 Num Lock‘Caps LOck以及 Scroll lock鍵是處
于鎖定還是關閉狀態。返回碼的高位顯示當前是否有鍵被接下(高位為回時生成負數),而
低位(0位)則顯示切換的狀態。表達式
::GetKeystate(VILtuNUMLOCK)& Oxo上
在 Num Lock鎖定時為非零值,否則為 0。同樣的技巧可以用到 VKCAPITAL(Caps lock)和
VK_SCROLL(Scroll lock)鍵上。有一點很重要就是在測試之前要將返回碼中除了最低位
以外的全部都屏蔽掉,這是因為高位仍然顯示鍵抬起或按下的狀態。
在所有情況下,:: GetKeystate都是鍵盤消息生成時,而不是在函數被調用的那一刻,報
告鍵盤鍵或鼠標鍵狀態的。這是一種特性,不是缺陷,因為這意味著您可以不必擔心在消息
處理程序開始查詢鍵狀態之前鍵是否被釋放了。由于它返回的信息只有在鍵盤消息從消息
隊列中被檢索到之后才有效,所以:: GetKeystate函數絕對不應該在鍵盤消息處理程序以外
使用。如果您確實需要知道鍵盤鍵或鼠標鍵的當前狀態,或者想要在鍵盤消息處理程序以
外檢查鍵盤鍵或鼠標鍵,可以使用:: GetAsyncKeystate來代替。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -