VC++基础 判断键盘消息

news/2024/7/24 11:04:55

头文件变量声明:

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!

转载于:https://www.cnblogs.com/cwbo-win/articles/3394262.html


http://www.niftyadmin.cn/n/853305.html

相关文章

线控的原理

先前的改装文章在此http://bbs.xiaomi.com/thread-1372419-1-1.html说明线控的原理:接听键就是短路mic,很简单,大多数耳机都是这样做的,那么线控呢?拆开htc原装耳机后发现,选曲键利用了不同的电阻短接mic线…

《剑指Offer》反转链表 Python实现

一、题目描述 输入一个链表,反转链表后,输出新链表的表头。 二、解题思路 把listNode中的next改为null可以,但是想把listnodenull就麻烦了。因为你自己定义的listnodehead的话,listnodenull时head并不是空。这个也是清理对象时…

numpy里面的argmax函数

numpy里面的argmax函数 函数原型:def argmax(a, axisNone, outNone) a----输入array axis----为0代表列方向,为1代表行方向 out----结果写到这个array里面 例子: >>>import numpy as np a np.array([[2,4,6,1],[1,5,2,9]])>&…

图解Oracle Checkpoint Queue

图解Oracle Checkpoint Queue 转载于:https://blog.51cto.com/maclean/1278286

C语言笔记 第四十课 程序的内存布局

第四十课 程序的内存布局 程序文件的一般布局 不同代码在可执行程序中的对应关系 程序与进程—操作系统原理 程序和进程不同 程序是静态的概念,表现形式为一个可执行文件 进程是动态的概念,程序由操作系统加载运行后得到进程 每个程序可以对应多个进…

MNIST数据集分析

MNIST数据集分析 mnist数据集托管在Yann LeCuns website 下载下来包含四个压缩文件,总共包含60,000个图片和对应的标签(55,000个训练数据和5000个验证数据)和10,000个测试图片和标签 以train-image为例子,解压转化为十六进制文件…

Isilon整合Hadoop

Isilon整合Hadoop:一站式大数据方案 2012-02-01比特网huangliang编译EMC在大数据分析上下了大笔投注,并整合Hadoop文件系统到其Isilon向外扩展的文件管理器,提供并允许他们的Greenplum分析产品使用Hadoop数据。 Hadoop是一种对象式的分布式和…

tensorflow 下CNN卷积神经网络实现

tensorflow 下CNN卷积神经网络实现 简介:卷积神经网络原理其实就是基于感受野,感受野讲的是只需识别某个图片的一个小区域就知道有某个东西。比如,在一个会议室里,要识别里面是否有投影仪,只需要看放投影仪的那部分小…