今天学习了最基本的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. Eclipse不显示项目栏

    Window>show view>package或者Window>show view>Other...  在弹出的对话框中搜索"Package".

  2. HDU 5934 Bomb(炸弹)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  3. 【转载】推荐5款超实用的.NET性能分析工具

    来源:http://www.csdn.net/article/2012-11-23/2812174-5-Good-and-useful-.NET-Profilers 虽然.NET框架号称永远不会发生内 ...

  4. 数据格式json讲解

    JSON 在使用名称/值对或XML时,实际上是使用javascript从应用程序中取得数据并将数据转换成另一种数据格式.javascript不仅作为格式化语言使用,还可以使用javascript语言中 ...

  5. python成长之路【第十七篇】:玩转jQuery

    一.jQuery简介 1.1.jQuery是什么 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototy ...

  6. 展讯camera去除尺寸相关缓存

    amera应用的缓存在/data/data/com.android.camera2/shared_prefs目录下

  7. laravel 实现上传 excel

    //导入电话号码 public function postTel(){ set_time_limit(0); ini_set('memory_limit','1024M'); $params = In ...

  8. Python之路 day3 函数定义 *args及**kwargs

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa import time # def logger(): # time_format ...

  9. js写的ajax

    1.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8& ...

  10. adaboost原理与实践

    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器).其算法本身是通过改变数据分布来实现的,它根据 ...