VC++60 第六章 键盘事件

VC6.0中处理键盘消息 主要在vc中对键盘消息进行处理,包含有相应的消息接收,消息类型 立即下载
第六章 键盘事件

当TAB键移动焦点到某按钮上时按下回车键,会产生和鼠标点击按钮同样的效果,这不是鼠标事件,而是按钮控件本身的标准行为。在编辑框中输入字符也一样,系统会发出“编辑框已被改变”这样的消息,这是编辑框控件本身的标准行为。本章要介绍的键盘事件是指:在任何状况下,用户按了一下键盘,系统捕捉到到这一事件,向主窗口发出“键盘被按下了”的消息,即发出WM_KEYDOWN这一消息映射。如果用户需要对“按了某键”有所动作,就可以在相应的响应函数中处理。

本章要点

1 如何添加键盘事件的消息映射
2 获取某键的键值信息

 

6.1 MyKey.exe程序的界面和功能

本程序的界面很简单,只有一个静态文本提示程序的用法。当用户按下某键后弹出一个消息框,显示所按键的键值(ASCII码),重复次数和一个标志值(长整数)。图chap06-01是按了小写的a后的消息框。

VC++60 <wbr>第六章 <wbr>键盘事件

 

静态文本的文字是暗灰色,因为没有被“激活”,即不选中Disabled属性。这一点很重要,因为如果它是激活状态的话,键盘消息就不是发送给对话框,而是被发送到它——被聚焦的控件上,它是唯一的控件,就是唯一的消息受体了。
创建工程和程序界面的设计就无须赘言了,设计好后就可以编写代码了。

 

6.2 添加消息映射和响应函数

在类向导窗口的Message Map页中选定该对话框的类CMyKeyDlg;在Message列表框中查到消息映射WM_KEYDOWN;按“添加函数”按钮,弹出系统推荐的函数名OnKeyDown(),就用此默认的;点[确定]后生成了该函数框架。立即点[加入代码]按钮开始写代码。

OnKeyDown()函数的声明如下:

void CMyKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

它传过来三个无符号整数类型的参数。其中nChar是该键的键值。nRepCnt是按键的重复次数,一般都是1,因为在按第一次时就被捕捉到并发出了消息。nFlags是一个标志,它用来表示某些特殊键的状态。我们的目标是显示这些信息,所以用三个字符型变量来储存这三条信息,组织好后用消息框把信息显示出来。具体代码如下:

void CMyKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default
    char strnChar[10];
    char strnFlags[10];
    char strnRepCnt[10];
    CString strKeyPressed;

    itoa(nChar, strnChar,10);
    itoa(nFlags,strnFlags,10);
    itoa(nRepCnt,strnRepCnt,10);

    strKeyPressed = (CString)"The value of this key:\n\n" +
        "nChar= " + strnChar + "\n\nnRepCnt= " + strnRepCnt +
        "\n\nnFlags= " +strnFlags;

    MessageBox(strKeyPressed, "键值测试程序");
    CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

字符串对象strKeyPressed是要在消息框中显示的信息。参数是数值型的,为了显示先要把它们转化为字符型的,函数itoa(nChar, strnChar,10)就是把十进制整数nChar转换为字符串strnChar。strKeyPressed的赋值语句把三条信息组织在一起,其中两个"\n"一是为了换行,二是为了显示一个空行。

现在就可以编译和运行一下了。因为不能安装[退出]按钮,我们来增加一个用鼠标双击可退出的方法。在类向导窗口中选定该对话框类CMyKeyDlg,找到消息映射WM_LBUTTONDCLICK;添加函数OnLButtonDblClk();在其中加入代码OnOK()就行了。

 

思考研究题
键盘事件的另一个消息映射是WM_KEYUP,在松开按键时发生。试编写一程序,在松开按键时弹出显示键值的相关信息。

—END—

 

监控键盘事件的钩子代码(vc++实现) 这是一个用VC实现的记录键盘事件的钩子程序。记录键盘按键信息与无形,如果你正在研究钩子,绝对对你有所帮助。 立即下载

相关推荐

MyKeyLocker(系统热键屏蔽禁用锁定工具)V1.0.zip

MyKeyLocker(系统热键屏蔽禁用锁定工具)V1.0.zip

VC6.0按回车键执行相关功能

VC6.0回车键执行相关功能 当用VC建立对话框之后,直接点击回车键之后,对话框就自动关闭了,如果要实现点击回车键不关闭对话框,且能实现相关的功能,则需要重新定义PreTranslateMessage函数。其基本流程如下:  1.在对话框中,鼠标右键>>ClassWizard。  2.选择添加PreTranslateMessage函数:  3.编辑函数PreTranslateMes

Txwtech 2211

研发流程后端开发工具,提示功能开发效率

后端开发工具

VC6.0 模拟键盘(虚拟键盘)小记

接“点击编辑框弹出对话框”后,下面再来接着实现点击编辑框后弹出键盘进在编辑框中进行输入: 过程: 1.建立基本对话框1,在其上面放有一个编程框1; 2.插入对话框2,作为键盘对话框,上面放几个按钮控件以实现按键功能. 3.点对话框1上的编程框1弹出键盘对话框(方法见我的文章"点击编辑框弹出对话框") 4.点击键盘对话框上的按键对对话框1上的编程框1

xiaoyaofriend的专栏 5734

手把手教你用DLP4500投影仪玩转结构光3D扫描(附固件烧录与序列设置避坑指南)

本文详细解析了如何使用DLP4500投影仪搭建结构光3D扫描系统,涵盖硬件组装、固件烧录、图案生成与优化等全流程。重点解决了固件烧录失败、图像格式错误等常见问题,并提供了实用的避坑指南和进阶技巧,帮助读者快速掌握DLP4500在3D扫描中的应用。

weixin_42662293的博客 301

yolov7模型部署流程

yolov7部署流程

算法的猫 1396

Microsoft Visual(VC6.0)回车键失效问题

vc6.0回车键失效

m0_46239295的博客 1525

配置权重_高盛都在用的资产配置模型,BL贝叶斯框架改进Markowitz

前面我们说到,markoviz的均值-方差模型,第一次,用数学的方式严格证明了投资组合存在最优的权重,但它的学术意义大于实战。主要原因有两个:1,人们很难有效的预测期望收益率;2,最优资产组合配置对输入非常敏感,结果往往难以被人理解。还有就是在投资中,定量只是完成初步构建,同步的定性判断依然非常重要:第一,投资者的认知偏好:倾向于关注他们认为被低估,但有发展潜力或者可以确定相对交易价值的小部分股票...

weixin_39892309的博客 715

C++ 获取键盘事件

原文地址:https://www.runoob.com/w3cnote/c-get-keycode.html 一 Windows 系统下的 vs 中可以使用 _kbhit() 函数来获取键盘事件,使用时需要加入 conio.h 头文件,例: #include <conio.h> #include <iostream> using namespace st...

WSG的博客--盛年不重来,一日难再晨.及时当勉励,岁月不待人. 5945

Linux音频调试实战:ALSA架构与tinymix工具的高级应用技巧

本文深入探讨了Linux音频调试的核心技术,重点解析了ALSA架构下音频信号的路由与混合机制。通过介绍轻量级命令行工具tinymix的高级应用技巧,指导开发者如何精准排查无声、音量异常、多路音频共存等复杂问题,并分享编写自动化测试脚本以提升嵌入式及智能设备音频开发效率的实战方法。

weixin_29210727的博客 101

MacOS Intel芯片实战:Docker Compose一键部署Dify全流程解析

本文详细解析了在搭载Intel芯片的MacOS系统上,使用Docker Compose一键部署开源LLM应用开发平台Dify的全流程。内容涵盖环境准备、Docker配置与镜像加速、代码拉取与配置初始化、服务启动与问题排查,以及访问验证与初步探索,旨在帮助开发者快速在本地搭建私有化AI应用开发环境。

ik678901234的博客 620

响应键盘事件__2018.11.04

Version:1.0 StartHTML:000000212 EndHTML:000055788 StartFragment:000000914 EndFragment:000055731 StartSelection:000001038 EndSelection:000055706 SourceURL:http://www.cppblog.com/jxliu02/articles/4473.h...

weixin_40316053的博客 599

CTF-Web学习笔记:服务端请求伪造(SSRF)篇

本文系统介绍了CTF比赛中SSRF漏洞的攻防技术。首先解析了SSRF的核心原理,即利用服务器对用户输入URL的未校验缺陷,诱导其访问内网资源。然后详细分析了5类常见CTF题型:文件读取、内网探测、云服务元数据窃取、协议绕过及组合漏洞利用。重点讲解了绕过URL过滤、利用特殊协议(如dict://、gopher://)等实战技巧,并通过一道SSRF+Redis的高阶题目演示完整攻击链。最后给出防御建议:严格校验输入URL、禁用危险协议、实施内网隔离等。

Deng7326的博客 1705

键盘记录及自动发送VC++实现

正文: 首先我想向大家说明的是: 1、   现在这个软体已经被某些杀毒软件(nod32、瑞星等)偶尔报为病毒了; 2、   本软件仅供学习使用; 3、   软件的很多代码为他人所有,我是直接拿来使用,我并不保留这个软件及代码的任何所有权,大家可以随便转载,但请帮我宣传我的

千里之外 5013

面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音

面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效

帅小柏的博客 271

ABAP CDS View 从入门到精通教程第一篇:ABAP CDS View 在 SAP 技术体系中的重要地位

摘要:本文介绍了SAP开发技术专家提供的多套SAP开发教程,涵盖ABAP、UI5、Fiori、OData、BTP等技术领域。重点阐述了ABAP CDS View在SAP S/4HANA中的核心地位,作为虚拟数据模型(VDM)的关键技术,它实现了OLTP和OLAP的统一处理。文章还说明了学习CDS View的前置条件,包括需要SAP NetWeaver 7.50 SP01或更高版本系统,以及使用SAP ABAP Development Tool进行开发实践。作者具有16年SAP开发经验,这些教程形成了完整的S

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 899

vc鼠标消息与键盘消息

  在Microsoft Windows 中,键盘和鼠标是两个标准的用户输入源,在一些交叠的操作中通常相互补充使用。当然,鼠标在今天的应用程序中比10年前使用得更为广泛。甚至在一些应用程序中,我们更习惯于使用鼠标,例如在游戏、画图程序、音乐程序,以及Web创览器等程序中就是这样。然而,我们可以不使用鼠标,但绝对不能从一般的PC中拆掉键盘。  相对于个人计算机的其他组件,键盘有非常久远的历史,它起源

forzy的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC++模拟键盘消息

实现VC++模拟键盘消息

u010757019的博客 890

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

R语言字符串处理相关

> str nchar(str) = 6 nchar函数算的是字符的个数 length(str) = 1 length函数算的是向量的长度 > str[1] "string" 这里并没有显示's' 要想得到's','t'这些可以这样做: > s >s[[1]][1] "s"

linian2763的博客 531

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC++6.0的快捷键[全]

VC++6.0快捷键 快捷键,又叫快速键或热键,指通过某些特定的按键、按键顺序或按键组合来完成一个操作,很多快捷键往往与如 Ctrl 键、Shift 键、Alt 键、Fn 键以及 Windows 平台下的 Windows 键和 Mac 机上的 Meta 键等配合使用。利用快捷键可以代替鼠标做一些工作,可以利用键盘快捷键打开、关闭和导航“开始”菜单、桌面、菜单、对话框以及网页。 (参考:http

Fantasy Dancer 1万+

MFC2.鼠标消息

VC++鼠标消息知识以下代码在VC++6.0编译通过1.鼠标的9个消息1.WM_LBUTTONDBLCLK //鼠标左键双击2.WM_LBUTTONDOWN   //鼠标左键按下3.WM_LBUTTONUP         //鼠标左键放开4.WM_MBUTTONDOWN //鼠标中键按下5.WM_MBUTTONUP                //鼠标中键放开6.WM_RBUTTONDBLCL

移动互联网改变生活,高效配对交易创造财富 2444

vc中如何响应键盘和鼠标事件

vc中如何响应键盘和鼠标事件 VC 中用 KeyPress 表示键盘响应的所有事件,包括 OnKeyDown 事件(键按下)、 OnKeyUp 事件(键按下后弹起)和 OnKeyPress 事件(按了某个键)。 OnKeyuUp 事件的语法为  void Object1:: OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );

水上漂的专栏 1492
上一篇: VC++60 第五章 如何设计鼠标事件
下一篇: VC++60 第七章 消息框的四种样式
GL_a_
博客等级 码龄11年 29粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值