VC++基础 判断键盘消息

头文件变量声明:

1  BOOL bShiftdown,bShiftup,bShiftB;

消息事件声明:

1 afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
2     afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
3     afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

增加消息映射:

1 BEGIN_MESSAGE_MAP(CtestnfcView, CView)
2     ON_WM_KEYDOWN()
3     ON_WM_KEYUP()
4     ON_WM_CHAR()
5     // 标准打印命令
6     ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
7     ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
8     ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CtestnfcView::OnFilePrintPreview)
9 END_MESSAGE_MAP()

按键消息事件的实现:

 1 void CtestnfcView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
 2 {
 3     // TODO: Add your message handler code here and/or call default
 4     if(nChar==VK_SHIFT)                                //判断Shift键是否被按下
 5     {
 6         //AfxMessageBox("dd");
 7         bShiftdown=TRUE;
 8         bShiftup=FALSE;
 9         Invalidate(TRUE);                                        //显示信息
10     }
11     
12     CView::OnKeyDown(nChar, nRepCnt, nFlags);
13 }
14 void CtestnfcView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) 
15 {
16     // TODO: Add your message handler code here and/or call default
17     if(nChar==VK_SHIFT)                                //判断Shift键是否被释放
18     {
19         //AfxMessageBox("dd");
20         bShiftup=TRUE;
21         Invalidate(TRUE);                                        //显示信息
22         bShiftdown=FALSE;
23     }    
24     CView::OnKeyUp(nChar, nRepCnt, nFlags);
25 }
26 void CtestnfcView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
27 {
28     // TODO: Add your message handler code here and/or call default
29     if((nChar==98)||(nChar==66))                        //判断是否敲击了字符键B键或b键
30     {
31         if(bShiftdown)
32         {
33             bShiftB=TRUE;
34             bShiftdown=FALSE;
35             Invalidate(TRUE);                                //显示信息
36         }    
37     }    
38     CView::OnChar(nChar, nRepCnt, nFlags);
39 }

界面的重绘:

 1 void CtestnfcView::OnDraw(CDC* pDC)
 2 {
 3     CtestnfcDoc* pDoc = GetDocument();
 4     ASSERT_VALID(pDoc);
 5     if (!pDoc)
 6         return;
 7     // TODO: 在此处为本机数据添加绘制代码
 8    if(bShiftdown)                                        //按下了Shift键
 9     {
10         pDC->TextOut(20,20,"用户按下了Shift键!");
11     }
12     if(bShiftup)                                            //释放了Shift键
13     {
14         pDC->TextOut(20,20,"用户释放了Shift键!");
15     }
16     if(bShiftB)                                        //同时按下了Shift键和B键
17     {
18         pDC->TextOut(20,20,"用户同时按下Shift键和B键!");
19         bShiftB=FALSE;
20     }
21 }

Above all , Come from network, Only provide for studying!

posted @ 2013-10-29 14:34  陳さん様  阅读(518)  评论(0编辑  收藏  举报