今天学习了最基本的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 default
if(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 default
if(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==)||(nChar==))//判断是否敲击了字符键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 here
if(bShiftdown)//按下了Shift键
{
pDC->TextOut(,,"用户按下了Shift键!");
}
if(bShiftup)//释放了Shift键
{
pDC->TextOut(,,"用户释放了Shift键!");
}
if(bShiftB)//同时按下了Shift键和B键
{
pDC->TextOut(,,"用户同时按下Shift键和B键!");
bShiftB=false;
} }

MFC之键盘和键盘消息处理的更多相关文章

  1. 【iOS自定义键盘及键盘切换】详解

    [iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...

  2. iOS 开发之 - 关闭键盘 退出键盘 的5种方式

    iOS 开发之 - 关闭键盘 退出键盘 的5种方式   1.点击编辑区以外的地方(UIView) 2.点击编辑区域以外的地方(UIControl) 3.使用制作收起键盘的按钮 4.使用判断输入字元 5 ...

  3. mfc对话框不能响应键盘消息

    这东西真是奇怪,找了半天原因,最终的发现却是让人抓狂,呵呵 现象:对话框按ESC或回车都不能关闭窗口(我没有处理PreTransplanteMessage),用spy++看,对话框完全收不到键盘消息 ...

  4. MFC的combox禁止键盘输入

    项目中有个combox的下拉窗控件,鼠标双击总能存在焦点,并且会修改combox显示的文字,网上查了好多资料,都说修改style,可是我的vs2015里没发现有style的属性,后面修改 modal ...

  5. JQuery识别键盘操作 & 键盘快捷键

    前几天写的那个项目登陆页是直接点击but登陆的,后来做完了之后不断的测试的时候就发现蛋疼之处了 每次在键盘上输入一长串密码之后,还得抬起手拿鼠标点一下确认登陆 直接就搜了一下,看了一下书 = = 其实 ...

  6. 29.VUE学习之--键盘事件.键盘修饰符的实例讲解

    键盘事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  7. MFC控件编程之鼠标跟键盘消息

    MFC控件编程之鼠标跟键盘消息 在MFC中鼠标消息.键盘消息我们很常用.所以说一下. 鼠标消息分为客户区消息.跟非客户区消息. 一丶客户区消息 我们可以处理消息.来进行我们相应的函数即可. MFC添加 ...

  8. iOS学习笔记——键盘处理

    在网上找到的资料比较零散,这部分学起来感觉也有点空虚,内容就只包括隐藏键盘和键盘高度两部分 隐藏键盘其实就在我学习iOS开发的第一个程序里面已经实践过了,不过当时还懵懵懂懂,现在就了解了是什么一回事, ...

  9. iOS_仿QQ表情键盘

    当UITextFiled和UITextView这种文本输入类控件成为第一响应者时,弹出的键盘由他们的一个UIView类的inputView属性来控制,当inputView为nil时会弹出系统的键盘,想 ...

随机推荐

  1. 阅读笔记 火球——UML大战需求分析 2

    从大一一开始接触C++的时候,上课模模糊糊的听王辉老师讲,我们第一学期学的是面向过程,第二学期学的是面向对象,迷迷糊糊的上了一年,到了大二的时候,对这个面向什么没有什么深层次的理解.知道学了JAVA ...

  2. 如何使用xshell远程连接ubuntu

    在Ubuntu上安装ssh就可以使用xshell登录了,安装步骤: 1,sudo apt-get install openssh-server 2,然后启动ssh sudo /etc/init.d/s ...

  3. PS切图篇

    一.PS界面设置 1.新建(ctrl+n) 初始化尺寸参数 预设:自定 宽度:1920px 高度:自设(如:2000px) 分辨率:72像素/英寸 颜色:RGB/8位 背景内容:透明 存储为预设 2. ...

  4. Java开发中经典的小实例-(打印输入重复的值)

    import java.util.ArrayList;import java.util.Scanner;public class Test8 {    public static void main( ...

  5. Mybaits使用

    一.多数据源问题 主要思路是把dataSource.sqlSesstionFactory.MapperScannerConfigurer在配置中区分开,各Mapper对应的包名.类名区分开 1 < ...

  6. ECharts-图表回执组件

    测试地址:http://echarts.baidu.com/doc/example.html

  7. XAF视频教程来啦,已出15课

    第一到第七课在这里: http://www.cnblogs.com/foreachlife/p/xafvideo_1_6.html 视频地址:http://i.youku.com/i/UMTI5OTE ...

  8. 用Charles抓取https接口数据

    由于我之前抓取的某APP接口全面换上了https接口,导致我在抓取过程中遇到了很大的困境 用Charles无法获取到内容,由于现在已经搞定了,无法展示当时的错误信息,我从网站找了一个类似的错误信息 首 ...

  9. SSIS excel2003文件导入列名显示为F1,F2 - FN

    问题现象: 数据源2003版本的EXCEL文件,第一列是空白,数据是从第二列开始的.所以SSIS中用EXCEL数据源倒入这个EXCEL时,所有的列显示不出来,显示的是F1,F2  - FN. 解决方法 ...

  10. cookie封装

    //设置cookie function setCookie(name,value,days){     //如果不设置天数 , 默认为30天     days=days?days:30;     va ...