MFC之键盘和键盘消息处理
生活随笔
收集整理的這篇文章主要介紹了
MFC之键盘和键盘消息处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天學習了最基本的MFC操作,鍵盤及鍵盤消息函數,跟著書中的內容自己編了個小程序。檢測用戶是否同時按下SHIFT和B鍵
第一步:先是建了一個單文檔模式的MFC程序,添加了鍵盤消息及處理函數。鍵盤消息處理類CKeyboardDemoView,添加到CKeyboardView的項目中。然后再添加三個消息函數分別是WM_KEYDOWN,WM_KEYUP,WM_CHAR.系統自動為其分配了鍵盤消息的消息映射宏,和消息映射函數。
第二步:就是編寫了實現的代碼,先是在CKeyboardView的同文件中定義要用的函數,bShiftup,bShiftdown,bShiftB。全部是BOOL型,并且初始為FALSE。然后編寫判斷shift是否被按下的代碼。
void CKeyboardDemoView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call defaultif(nChar==VK_SHIFT)//判斷Shift鍵是否被按下 {//AfxMessageBox("dd");bShiftdown=true;bShiftup=false;Invalidate(true);//顯示信息 }CView::OnKeyDown(nChar, nRepCnt, nFlags); }還有判斷是否被松開
void CKeyboardDemoView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call defaultif(nChar==VK_SHIFT)//判斷Shift鍵是否被釋放 {//AfxMessageBox("dd");bShiftup=true;Invalidate(true);//顯示信息bShiftdown=false;} CView::OnKeyUp(nChar, nRepCnt, nFlags); }以及判斷是否敲擊了B鍵
void CKeyboardDemoView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call default if((nChar==98)||(nChar==66))//判斷是否敲擊了字符鍵B鍵或b鍵 {if(bShiftdown){bShiftB=true;bShiftdown=false;Invalidate(true);//顯示信息 } } CView::OnChar(nChar, nRepCnt, nFlags); }最后只要在Ondraw的函數中編寫窗口輸出函數
void CKeyboardDemoView::OnDraw(CDC* pDC) {CKeyboardDemoDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereif(bShiftdown)//按下了Shift鍵 {pDC->TextOut(20,20,"用戶按下了Shift鍵!");}if(bShiftup)//釋放了Shift鍵 {pDC->TextOut(20,20,"用戶釋放了Shift鍵!");}if(bShiftB)//同時按下了Shift鍵和B鍵 {pDC->TextOut(20,20,"用戶同時按下Shift鍵和B鍵!");bShiftB=false;}}?
?
轉載于:https://www.cnblogs.com/shiqifeng/p/3388603.html
總結
以上是生活随笔為你收集整理的MFC之键盘和键盘消息处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串,枚举,数值之间的转换
- 下一篇: sql语句--插入