鍵盤訊息分為擊鍵訊息和字元訊息
擊鍵訊息,如
wm_keydown
wm_keyup
wm_syskeydown
wm_syskeyup
字元訊息,如
wm_char
wm_deadchar
wm_syschar
wm_sysdeadchar
//帶有sys表示一般交給defwindowproc處理,如包含alt的擊鍵
以wm_keydown 訊息為例:
訊息含義:
當乙個非系統按鍵被按下的時候,傳送到鍵盤焦點所在視窗的訊息。
非系統按鍵指的是沒有與 alt 鍵同時按下的任何按鍵。
訊息定義:
#define wm_keydown 0x0100
引數:wparam:指定該按鍵的虛擬鍵**。
lparam:指定重複計數、oem 掃瞄碼、擴充套件鍵標記、內容**、先前狀態和轉換狀態,具體含義和表示方法如下:
位含義
0-15
1. 當前訊息被重複的次數
2. 當使用者按下按鍵不鬆開時,windows 會將該鍵產生的所有 wm_keydown 訊息合稱為乙個訊息,並增加該字段的值
3. 重複計數大於 1 表明此時連續擊鍵的速度快於程式的處理能力
16-23
oem 掃瞄碼(鍵盤硬體產生的**)
241. 指定該按鍵是否擴充套件鍵
2. 比如 ibm 加強型鍵盤有 101 或 102 個鍵,右邊的 alt 和 ctrl 就是擴充套件鍵
25-28
系統保留
29內容**:對於 wm_keydown 訊息來說,這個值總是 0
30先前狀態:在訊息傳送前如果按鍵是被按下的話該值是 1,否則是 0
31轉換狀態:對於 wm_keydown 訊息來說,這個值總是 0
鍵盤掃瞄碼:是基於鍵盤硬體真實的掃瞄碼,可能因鍵盤的廠家,型號不同而有所不同
虛擬鍵**:microsoft為消除掃瞄碼弊端,把各個按鍵的掃瞄碼對映成的**(不區分大小寫,即大小寫字元虛擬鍵**相同)
擊鍵訊息通過 translatemessage() 函式轉換為字元訊息。
引數:wparam:ansi字元碼或unicode字元碼
lparam:同擊鍵訊息
//如果註冊視窗類時呼叫的 registerclass 被巨集定義為 registerclassw 則表示使用的是unicode字元碼,如果被巨集定義為 registerclassa則表示使用的是ansi字元碼。也可以通過 iswindowunicode()函式判斷。
Windows鍵盤訊息處理
本文大部分來自msdn和的部落格,我在實踐的基礎上再作了一些總結。1,虛擬鍵 vk 鍵盤上每乙個鍵對應乙個掃瞄碼,掃瞄碼是oem廠商制定的,不同的廠商生產的鍵盤同樣乙個按鍵的掃瞄碼都有可能出現不一致的情況,為了擺脫由於系統裝置不一致的情況,通過鍵盤驅動程式將掃瞄碼對映為統一的虛擬鍵碼表示,從而達到所...
Windows程式設計 視窗鍵盤訊息滾動事件
pragma once include define numlines int sizeof sysmetrics sizeof sysmetrics 0 struct sysmetrics numlines 巨集定義是為了得到sysmetrics的數量 include include system...
鍵盤訊息大全
austin 的 vc鍵盤訊息大全 符號常量 十六進製制值 指定的滑鼠或鍵盤按鍵 vk lbutton 01 滑鼠左鍵 vk rbutton 02 滑鼠右鍵 vk cancel 03 control break 過程 vk mbutton 04 滑鼠中鍵 vk back 08 backspace 鍵...