按鍵訊息響應

2022-07-29 11:06:14 字數 4144 閱讀 6154

wm_create 視窗過程收到的第一條資訊

wm_command 選單按下

wm_destroy 正在銷毀視窗

wm_keydown lparam含義為虛擬鍵碼「a」(

0x41

) wparm (這個對)包含按下鍵的ascii碼 鍵盤按下產生訊息

wm_keyup lparam含義為虛擬鍵碼「a」(

0x41

) wparam 包含按下鍵的ascii碼 按下後放開才產生訊息

wm_syskeydown lparam鍵盤放開

wm_char lparam含義為 anst碼「a」(

0x61

) wparam 包含按下鍵的ascii碼

wm_timer 定時器訊息

wm_paint 重繪訊息

wm_quit 退出訊息

按鍵產生的字元訊息 wm_char

當使用者按下乙個鍵時,windows將 wm_keydown或wm_syskeydwn 訊息放入! 當該鍵被釋放時,windows把wm_keyup或wm_syskeyup訊息放入!

非系統鍵擊 wm_keydown wm_keyup

系統鍵擊 wm_syskeydwn wm_syskeyup

滑鼠訊息

按下 彈起 雙擊

左鍵 wm_lbuttondown wm_lbuttonup wm_lbuttondblclk

中鍵 wm_mbuttondown wm_mbuttonup wm_mbuttondblclk

右鍵 wm_rbuttondown wm_rbuyyonup wm_rbuttondblclk

wm_mousemove 滑鼠移動

傳送這些訊息時,lparam引數包含了滑鼠的位置座標,可以這樣讀出座標資訊。

xpos=loword(lparam)

ypos=hiword(lparam)

這些座標都是以客戶區的左上角為原點,向右是x軸正方向,向下是y軸正方向。

clienttoscreen函式可以把座標轉換為以螢幕的左上角為原點的座標。

bool clienttoscreen(hwnd hwnd,lppoint lppoint);

bool screentoclient(hwnd hwnd,lppoint lppoint);

同樣 screentoclient函式又可以把座標轉行回來。

lppoint引數指向point結構的指標,把要轉化的座標資訊寫入lppoint引數指向的記憶體,windows把轉化後的結果也返回到這塊記憶體中。

wparam 引數包含滑鼠按鈕的狀態

mk_lbutton 左鍵按下

mk_mbutton 中鍵按下

mk_rbutton 右鍵按下

按下滑鼠左鍵:wm_lbuttondown

拖動滑鼠移動:wm_mousemove

放開滑鼠左鍵:wm_lbuttonup

mk_shift

鍵按下mk_control

鍵按下例如,收到 wm_lbuttondown訊息時,如果wparam&mk_shift的值為true,就會知道當單擊左鍵時, 鍵也被按下了!

wm_size 視窗尺寸改變 lparam 存放視窗大小 低位欄位是 寬度 高位是高度 loword hiword

wm_move 視窗移動時

/////////////////////////////////

//滾動條

wm_vscroll 垂直滾動條

wm_hscroll 水平滾動條

sb_endscroll 滑鼠點選滾動條移動到位置後在放開就會發出這個訊息

sb_linedown 滾動條向下移動一行

sb_lineup 滾動條向上移動一行

sb_pagedown 滾動條向下翻一頁

case

sb_pageup 滾動條向上翻一頁

將滑鼠放在滑塊上然後按下滑鼠時,可以移動滑塊,這將會產生sb_thumbtrack和sb_thumbposition訊息當wparam低位欄位是sb_thumbtrack時,wparam的高位字是使用者拖動滑塊的當前位置。這個位置處於滾動條範圍的最小值和最大值之間。當wparam的低位字是sb_thumbposition時wparam的高位字是使用者鬆開滑鼠鍵時滑塊的最終位置。對於其他滾動條動作,wparam的高位字應該被忽略。 高低 hiword loword

1vk_lbutton 滑鼠左鍵

2vk_rbutton 滑鼠右鍵

3 vk_cancel ctrl+break(通常不需要處理)

4vk_mbutton 滑鼠中鍵

8vk_back backspace

9vk_tab tab

12vk_clear num lock關閉時的數字鍵盤5

13vk_return enter(或者另乙個)

16vk_shift shift(或者另乙個)

17vk_control ctrl(或者另乙個)

18vk_menu alt(或者另乙個)

19vk_pause pause

20vk_capital caps lock

27vk_escape esc

32vk_space spacebar

33vk_prior page up

34vk_next page down

35vk_end end

36vk_home home

37vk_left 左箭頭

38vk_up 上箭頭

39vk_right 右箭頭

40vk_down 下箭頭

41vk_select 可選

42vk_print 可選

43vk_execute 可選

44vk_snapshot print screen

45vk_insert insert

46vk_delete delete

47vk_help 可選

48~57 主鍵盤上的0~9

4848

主鍵盤上的0

4949

主鍵盤上的1

5050

主鍵盤上的2

5151

主鍵盤上的3

5252

主鍵盤上的4

5353

主鍵盤上的5

5454

主鍵盤上的6

5555

主鍵盤上的7

5656

主鍵盤上的8

5757

主鍵盤上的9

65~90 a~z65a

66b67c

68d69e

70f71g

72h73i

74j75k

76l77m

78n79o

80p81q

82r83s

84t85u

86v87w

88x89y

90z

91vk_lwin 左windows鍵

92vk_rwin 右windows鍵

9396~105 vk_numpad0~vk_numpad9 num lock開啟時數字鍵盤上的0~9

106 vk_nultiply 數字鍵盤上的*

107 vk_add 數字鍵盤上的+

108vk_separator 可選

109 vk_subtract 數字鍵盤上的-

110vk_decimal 數字鍵盤上的.

111 vk_divide 數字鍵盤上的/

112~135 vk_f1~vk_f24 功能鍵f1~f24

144vk_numlock num lock

145 vk_scroll scroll lock

VS按鍵響應

一 實際按鍵響應 參考新增pretranslatemessage方法,然後 bool c dlg pretranslatemessage msg pmsg 其它按鍵響應 return true 不再響應其它按鍵 很重要 return cdialog pretranslatemessage pmsg ...

MFC 按鍵訊息

按鍵訊息 1 按鍵訊息 2 字元訊息 wm keydown 按下非系統鍵 wm keyup 鬆開非系統鍵 wm syskeydown 按下系統鍵 wm syskeyup 鬆開系統鍵 說明 不可產生顯示字元的一般都是系統鍵 按鍵和鬆開按鍵訊息通常是成對出現的 當按鍵按下,鬆開時,產生三條訊息,按下按鍵...

TSF 響應按鍵

cstringrange 是乙個沒有 0結尾的字串型別,有兩個成員 dword ptr stringbuflen length is in character count.const wchar pstringbuf buffer which is not add zero terminate.cs...