MFC按钮按下事件很容易实现,为一个按钮直接添加点击事件即可,但是有时需要检测按钮的抬起,即按钮的按下和抬起单独实现各自的功能时,就需要对两种状态单独检测。下面把MFC按钮和键盘的按下和抬起一起实现。
方法是重写**PreTranslateMessage(MSG* pMsg)*函数:
步骤:
1.新建一个对话框MFC工程,名称自主定义即可
2.添加一个按钮,ID默认为IDC_BUTTON1,不需更改,也不必为按钮添加点击事件
3.按住“Ctrl+W”打开类向导,在Message Maps选项卡中的Messages下,选择
PreTranslateMessage并实现功能添加:

4.具体实现PreTranslateMessage(MSG
pMsg)函数,代码如下:

int i=0;
BOOL CTestButtonUpDownDlg::PreTranslateMessage(MSG* pMsg)
{// 键盘按键检测if (pMsg->message == WM_KEYDOWN)// 按键按下检测{if (pMsg->wParam == VK_UP){// 向上键按下TRACE("PgUp(top) Down\n");}else if (pMsg->wParam == VK_DOWN){// 向下键按下TRACE("PgDn Down\n");}else if (pMsg->wParam == VK_LEFT){// 向左键按下TRACE("Home(left) Down\n");}else if (pMsg->wParam == VK_RIGHT){// 向右键按下TRACE("End(right) Down\n");}else if (pMsg->wParam == VK_SHIFT){//Shift 键按下TRACE("Shif Down\n");}else if (pMsg->wParam == VK_CONTROL){//Ctrl 键按下TRACE("Ctrl Down\n");}else if (pMsg->wParam>=VK_NUMPAD0 && pMsg->wParam<=VK_NUMPAD9) {// 小键盘数字键按下TRACE("small number down(0~9)\n");}else if (pMsg->wParam>=0x30 && pMsg->wParam<=0x39){// 数字键按下 (不能使用 VK_0)TRACE("number key down(0~9)\n");}else if (pMsg->wParam>=0x41 && pMsg->wParam<=0x5A){// 键盘字母键按下 (不能使用 VK_A)TRACE("Alphabet down(A~Z)\n");}else if (pMsg->wParam == VK_BACK) {   // 退格键按下TRACE("Backspace down\n");}else if (pMsg->wParam == VK_DELETE){// 删除键按下}else if (pMsg->wParam == VK_F1){//F1 键按下TRACE("F1 down\n");}//屏蔽ESC和Enter键:避免按ESC和Enter键,对话框退出else if (pMsg->wParam == VK_ESCAPE)//ESC{return TRUE;}else if (pMsg->wParam == VK_RETURN)//Enter{return TRUE;}//return true;  // 使消息不再进行处理}if (pMsg->message == WM_KEYUP)//按键弹起检测{if (pMsg->wParam == VK_SHIFT){//Shift 键弹起TRACE("Shif Up %d\n",i);}else if (pMsg->wParam == VK_CONTROL){//Ctrl 键弹起}//return true;  // 使消息不再进行处理}//MFC界面按钮检测if(pMsg->message == WM_LBUTTONDOWN){if(pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd){   //按钮按下TRACE("MFC Button Down\n");}}else if(pMsg->message == WM_LBUTTONUP)//判断是否有MFC界面按钮弹起{if(pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd)  //IDC_BUTTON1为MFC界面button按钮的ID{//按钮弹起TRACE("MFC Button Up\n");}}return CDialog::PreTranslateMessage(pMsg);
}

5.以调试模式(F5)运行测试,按下键盘按键或MFC界面按钮:

结语:谢谢 !

MFC--按键、按钮按下和弹起事件检测相关推荐

  1. python tkinter 实现鼠标按下和弹起事件监测

    1.本来准备使用pyhook的,结果python3下存在兼容性问题,鼠标会卡死,劝退!气愤+1! 2.然后准备使用据说好用的pyhook3或pywinhook,结果安装出问题,又是什么swig又是什么 ...

  2. JQuery 键盘按下和弹起事件

    $(document).ready(function () { $(":text").keydown(function () { // 按键按下时触发的事件: $(":t ...

  3. MFC 捕获按钮 按下和抬起 (转)

    BOOL Cxx::PreTranslateMessage(MSG* pMsg) {// TODO: 在此添加专用代码和/或调用基类CString strShow = _T("") ...

  4. 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )

    文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...

  5. html回车按键确认按钮,button默认enter事件(回车事件)。

    这里我介绍一下,button按钮默认回车(enter)事件.如果大家可以用submit,就不用看以下代码,因为submit可以直接默认回车事件(enter). 在这里特此声明,代码是通过jquery完 ...

  6. RecyclerView系列(三): 滑动事件检测

    1.概述 这是一个关于RecycleView滑动事件检测RecycleView滑动到顶部或者底部的状态. 可用于实现RecycleView加载更多或者刷新(虽然刷新可以直接用SwipeRefreshL ...

  7. 细说浏览器特性检测(2)-通用事件检测

    在上一篇中介绍了jQuery1.4版本新增的几个浏览器特性检测方案和具体的目的,本文将以事件为中心,介绍一个较为完整.通用的事件检测方案. 事件检测,即检测某一事件在不同的浏览器中是否存在(可用),这 ...

  8. 在Activity中响应ListView内部按钮的点击事件的两种方法

    转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...

  9. [C# 基础知识系列]专题五:当点击按钮时触发Click事件背后发生的事情

    引言: 当我们在点击窗口中的Button控件VS会帮我们自动生成一些代码,我们只需要在Click方法中写一些自己的代码就可以实现触发Click事件后我们Click方法中代码就会执行,然而我一直有一个疑 ...

  10. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 编辑 Qt 桌面按钮控件 | 修改按钮文本 | 为按钮添加点击事件 | 系统调用 | 去掉系统调用命令窗口 )

    文章目录 一.添加按钮控件 二.修改按钮文本 三.为按钮添加点击事件 ( 弹出对话框 ) 四.为按钮添加点击事件 ( 打开记事本 ) 五.为按钮添加点击事件 ( 打开计算器 ) 六.去掉系统调用时弹出 ...

最新文章

  1. 陆首群:评人工智能如何走向新阶段?
  2. fftw_plan_dft_2d优化
  3. python怎么导入视频-python怎么导入数据
  4. Spring Cloud Alibaba - 04 Nacos 领域模型划分
  5. python+selenium自动化测试——浏览器驱动
  6. 常用正则表达式(?i)忽略字母的大小写!
  7. html5作品展示的动效,html5动效系列八:8个非常神奇的HTML5动画和应用
  8. centos6.5lamp环境搭建
  9. 单片机c语言不能编译,用keil4编译C语言代码,编译通过,但是链接时无法产生.hex文件。...
  10. XSLT Transform
  11. OpenCV学习笔记(六)——对XML和YAML文件实现I/O操作
  12. Linux SocketCan client server demo hacking
  13. STM32CbueMX之W25Q256
  14. es自建搜索词库_ES——中文分词以及词库扩展
  15. 阿里云服务器华东 1、华东 2、华北 1、华北 2、华南 1 是哪个城市
  16. css背景图加载太慢怎么办,CSS实现background背景图优化,快速加载图片
  17. 手机上流行的各类谜语大揭密
  18. OpenCV深入学习(6)--直方图之calcHist使用(补)
  19. 测试面试题 - GIT
  20. 百度云“资源”被和谐,两行代码帮你解决

热门文章

  1. PageBarHelper(数字页码条帮助类)
  2. java自行车DH32,中国国际自行车嘉年华之Enduro、DH装备篇
  3. 灰度图像和彩色图像的直方图均衡化(python实现)
  4. 针对爬取豆瓣top250电影失败的问题
  5. python计算复数模_python 模拟casio复数计算器【施工中】
  6. SUSE Linux 15 If ‘netstat‘ is not a typo you can use command-not-found to lookup the package...
  7. 深度体验中国长城2020版笔记本电脑有感
  8. 【XLPNet车牌识别算法】第一章 序
  9. HyperX旋火无线游戏鼠标,摆脱“线”制,黑白双煞争分夺秒
  10. 题十:二叉搜索树与双向链表