日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

一个简易的键盘按键测试程序

發布時間:2023/12/31 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 一个简易的键盘按键测试程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該小程序是大學同學托我給他們公司做的,沒有酬勞,但是我還是很認真的做了,當是鍛煉自己了。這是我寫的第一個帶有界面的程序,用的是 MFC,是因為在研一國慶時過了一遍《VC++深入詳解》。

進過不斷摸索、調試、完善,耗時一周多,完成于 2013/05/15,下面是一些回顧,有些細節已經遺忘。

源碼托管在 Github:點擊進入鏈接

源程序(不含源碼):點擊進入鏈接

程序分兩大部分:

1、界面主程序,重載“PreTranslateMessage”函數,捕獲擊鍵并作相應處理;

2、但是有些特殊鍵“PreTranslateMessage”函數無法捕獲,如:左右 Win 鍵、屏幕截取鍵、還有“音量”、”播放“等特殊功能鍵,就需要安裝一個鉤子來捕捉。我用動態庫寫了一個鍵盤鉤子,沒有必要,只是為了嘗試一下 dll 的編寫。

在“PreTranslateMessage”函數里要捕捉所有類型的按鍵:

1、一般字符鍵(WM_KEYDOWN);

2、系統鍵(WM_SYSKEYDOWN --Alt,VK_MENU);

3、回車鍵(VK_RETURN);

4、屏幕截取鍵(VK_SNAPSHOT);

剛開始考慮不全,只能一步步調試完善。

重難點:

1、同編碼按鍵的處理:左右shift、ctrl、alt;兩個回車;逗號與截屏

2、屏蔽F1彈出幫助;

3、用 Hook 屏蔽 Win 鍵彈出 Win 菜單;

4、“屏幕截取鍵”是個特殊的按鍵,如果被系統截取,則只有Keyup,沒有Keydown,所以需要用鉤子屏蔽;

用到的數據結構 ——哈希表,當時并不清楚地知道這就是哈希表,只是覺得這樣用可以很方便地找到對應按鈕:

1 CMFCButton* keys[256];
2 
3 ……
4 
5 // 初始化按鍵數組
6 keys[VK_ESCAPE] = &m_esc;
7 
8 ……

廠商的一些特殊要求:

1、按鍵可能會一直按著進行測試,或多次按下/彈起,他們要求按下時按鈕要變色且按鈕下陷,直到彈起后才恢復;

2、不管“Num Lock”是否鎖定,小鍵盤都要作用為數字鍵盤。剛開始覺得這是個棘手的要求,因為“Num Lock”沒鎖定時,除了“5”,其他幾個數字對應的編碼是另外幾個功能鍵的編碼了,沒法判斷是不是數字鍵按下的。后來經過查閱資料發現當數字鍵映射為其他鍵時,“pMsg->lParam”域包含實際編碼,否則pMsg->lParam為空,“pMsg->wParam”包含實際編碼。

3、程序一直置頂;

4、界面可調大小,按鈕要按比例縮放 -- 在界面初始化時保存控件坐標,在 OnSize 時按比例調整大小;

總結

以上是生活随笔為你收集整理的一个简易的键盘按键测试程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。