VC中键盘键的对应关系
转载:VC中如何响应键盘和鼠标事件
VC 中用 KeyPress 表示键盘响应的所有事件,包括 OnKeyDown 事件(键按下)、 OnKeyUp 事件(键按下后弹起)和 OnKeyPress 事件(按了某个键)。
OnKeyuUp 事件的语法为 void Object1:: OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );
OnKeyDown 事件的语法为 void Object1:: OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
这里参数 nChar 代表的是键盘上各键的代码,是编写程序时必须要写明的,而参数 nRepCnt, 和 nFlags 则可以使用默认值而不必编写。
下面说明 VC 的 KeyPress 事件中的 nChar 代码与键盘中各键的对应关系:
VK_0 到 VK_9 表示键盘上数字“ 0 ”到“ 9 ”键 (ASCII 码为 0x30 - 0x39) ;
VK_A 到 VK_Z 表示键盘上字母“ A ”到“ Z ”键 (ASCII 码为 0x41 - 0x5a) ;
VK_ADD 表示数字键盘上的“ + ”键。
VK_ALT 表示键盘上 “ ALT ”键。
VK_BACK_QUOTE 表示键盘上 “ ` ”键。
VK_BACK_SLASH 表示键盘上 “ \ ”键。
VK_BACK_SPACE 表示键盘上 “ BACKSPACE “键。
VK_CAPS_LOCK 表示键盘上 “ CAPS LOCK ”键。
VK_CLOSE_BRACKET 表示键盘上 “ ] ”键。
VK_COMMA 表示键盘上 “ , ”键。
VK_CONTROL 表示键盘上 “ CTRL ”键。
VK_DECIMAL 表示数字键盘上 “ . ”键。
VK_DELETE 表示键盘上 “ DELETE ”键。
VK_DIVIDE 表示键盘上 “ / ”键。
VK_DOWN 表示键盘上 “向下箭头”键。
VK_END 表示键盘上 “ END ”键。
VK_ENTER 表示键盘上 “ ENTER ”键。
VK_EQUALS 表示键盘上 “=”键。
VK_ESCAPE 表示键盘上 “ ESC ”键。
VK_F1 到 VK_F12 表示键盘上 “ F1 ”到“ F12 ”键。
VK_HOME 表示键盘上 “ HOME ”键。
VK_INSERT 表示键盘上 “ INSTERT ”键。
VK_LEFT 表示键盘上 “向左箭头”键。
VK_MULTIPLY 表示键盘上 “ * ”键。
VK_NUMPAD0 到 VK_NUMPAD9 表示数字键盘上 “ 0 ”到“ 9 ”键。
VK_OPEN_BRACKET 表示键盘上 “ [ ”键。
VK_PAGE_DOWN 表示键盘上 “ PAGE DOWN ”键。
VK_PAGE_UP 表示键盘上 “ PAGE UP ”键。
VK_PAUSE 表示键盘上 “ PAUSE ”键。
VK_PRINTSCREEN 表示键盘上 “ PRINT SCREEN ”键。
VK_RIGHT 表示键盘上 “向右箭头”键。
VK_SCROLL_LOCK 表示键盘上 “ SCROLL LOCK ”键。
VK_SEMICOLON 表示键盘上 “;”键。
VK_SHIFT 表示键盘上 “ SHIFT ”键。
VK_SPACE 表示键盘上 “ SPACEBAR ”键。
VK_SUBTRACT 表示键盘上 “-”键。
VK_TAB 表示键盘上 “ TAB ”键。
VK_UP 表示键盘上 “向上箭头”键。
用键盘在人机交互中完成对屏幕中物体位置移动的控制功能时常会用到上、下、左、右几个方向键。下面的程序可以完成对某一可视控件 Object1 的位置进行控制(分别按下上、下、左、右键使其分别向上、下、左、右方向移动 5 个屏幕单位):
{
CWnd::OnKeyDown(UINT nChar, UINT nRecpCnt, UNIT nFlages);
Switch(nChar)
{
case VK_LEFT;
Object1.left=Object1.left-5; // 按下左键控件左移 5 个单位
break;
case VK_RIGHT;
Object1.left=Object1.left+5; // 按下右键控件右移 5 个单位
break;
case VK_UP;
Object1.top=Object1.top-5; // 按下上键控件上移 5 个单位
break;
case VK_DOWN;
Object1.top=Object1.top+5; // 按下下键控件下移 5 个单位
break;
defult:
break;
}
}
2. 对鼠标的响应
VC 中对鼠标的响应常用的有以下事件:
a. OnLButtonDblClk :语法为 void Object1 Wnd :: OnLButtonDblClk( UINT nFlags, CPoint point ){} ,表示控件对双击鼠标左键时的响应。
b. OnLButtonDown :语法为 void Object1 Wnd :: OnLButtonDown( UINT nFlags, CPoint point ){} ,表示控件对按下鼠标左键时的响应。
c. OnLButtonUp :语法为 void Object1 Wnd :: OnLButtonUp( UINT nFlags, CPoint point ){} ,表示控件对按下的鼠标左键放开后的响应。
d. OnRButtonDblClk :语法为 void Object1 Wnd :: OnRButtonDblClk( UINT nFlags, CPoint point ){} ,表示控件对双击鼠标右键时的响应。
e. OnRButtonDown :语法为 void Object1 Wnd :: OnRButtonDown( UINT nFlags, CPoint point ){} ,表示控件对按下鼠标右键时的响应。
f. OnRButtonUp :语法为 void Object1 Wnd :: OnRButtonUp( UINT nFlags, CPoint point ){} ,表示控件对按下的鼠标右键放开后的响应。
其中的参数 nFlags 用于指示按下的键的代码,它可以是下面的几个值或它们的组合:
MK_CONTROL 表示按下 CTRL 键 ;
MK_LBUTTON 表示按下鼠标左键;
MK_MBUTTON 表示按下鼠标中键;
MK_RBUTTON 表示按下鼠标右键;
MK_SHIFT 表示按下 SHIFT 键;
Point 参数表示鼠标的光标位置相对于所在窗口的左上角的水平和垂直坐标值。
在 VC 中用鼠标响应事件来完成人机交互中的控制功能是比较容易的。例如把一个控件 Object1 的位置移动到鼠标光标的位置,下面简单的程序就可完成:
void Object1::OnLButtonDown(UINT nFlags, CPoint point)
{
CPoint Position ;
Position = point;
Object1->left=Position.x;
Object1->top=Position.y; // 按下鼠标左键后控件的水平和垂直方向的值分别与鼠标的光标位置一致
}
VC中键盘键的对应关系的更多相关文章
- js中键盘按键对应的键值
js键盘键值 keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 1 ...
- VC++中开发汇编语言(转)
汇编程序结构 一个显示字符串的汇编程序 程序格式 一.模式定义 二.includelib语句 三.函数声明语句 四.数据和代码部分 Visual C/C++环境 建立工程 汇编程序的调试 一.设置断点 ...
- C++Builder 中 Enter键或者Tab键无效
VC++中或者C++Builder中 当回车键不能换行时应该就是因为自己不小心按到了键盘上的insert键,要想恢复只需要再按一下就可以了. 小经验
- VC++学习之VC中常见问题
VC++学习之VC中常见问题 (1)为什么某个类突然在工作区间里面突然看不见了? 只是类隐藏了,打开FILEVIEW,找到隐藏类的头文件,随便敲一下键盘的空格键,类就会在CLASSVIEW中显示了 ( ...
- VC中GetLastError()获取错误信息的使用,以及错误代码的含义
转载:http://www.seacha.com/article.php/knowledge/windows/mfc/2011/0423/335.html VC中GetLastError()获取错误信 ...
- 深度解析VC中的消息传递机制
摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的.所以,要学好Windows编程,必须 对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面 ...
- 深度解析VC中的消息
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情 ...
- 深度解析VC中的消息(转发)
http://blog.csdn.net/chenlycly/article/details/7586067 这篇转发的文章总结的比较好,但是没有告诉我为什么ON_MESSAGE的返回值必须是LRES ...
- VC 模拟键盘输入
转载请注明来源:https://www.cnblogs.com/hookjc/ vc模拟键盘输入keybd_event(VK_LWIN, 0, 0 ,0);keybd_event('M', 0, 0 ...
随机推荐
- Linux安装jdk、删除Open jdk
1.将jdk解压安装完成后,在bin目录下查看当前jdk的版本号 命令: ./java -version 2.编辑修改配置 1. 修改profile文件 进入命令: vi /etc/profil ...
- MySQL事务的隔离级别
为什么需要隔离 当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性,在介绍数据库提供的各种隔离级别之前,我们先看看如果不考虑事务的隔离性,会发生的几种 ...
- Oracle数据库报错: ORA-29275:部分多字节字符
Oracle数据库报错: ORA-29275:部分多字节字符 就是你查出来的字符串(有汉字的)有可能会出问题, 在认为有问题的字段 用 to_nchar("字段")包起来 比如 你 ...
- JavaScript权威指南--类型、值和变量
本章要点图 数据类型:计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type ...
- Python 基础教程(有经典的例子)
http://www.runoob.com/python/os-listdir.html
- [nodejs]解决mysql和连接池(pool)自动断开问题
最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...
- Inventory Update
依照一个存着新进货物的二维数组,更新存着现有库存(在 arr1 中)的二维数组. 如果货物已存在则更新数量 . 如果没有对应货物则把其加入到数组中,更新最新的数量. 返回当前的库存数组,且按货物名称的 ...
- 弄懂flex布局
目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布局以及它的好处,这里就不再赘述. 在这篇文章里,想说说flex布局的属性语法及其细节.那么网上也 ...
- 【css】25个漂亮的响应式布局的web设计【转】
响应的web设计的做法是提高用户的浏览质量,并在不同设备上能够完美的浏览使用,就像大前端推出的D7主题.看看下面美丽的响应的网站布局,通过本文你会在以后的设计中找到响应的web设计的灵感. 1.Mar ...
- redis安装配置记录
环境:CentOS7,最小化安装 安装gcc wget # yum upgrade # yum install gcc # yum install wget 下载并安装redis # wget htt ...