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 ...
随机推荐
- mac下安装c++开发环境
mac下安装c++开发环境 1 注册apple id 按照apple注册步骤注册apple id,我注册时遇到如下问题 apple store完成创建apple id步骤中,选择付款方式和账单地址后, ...
- 缓存技术内部交流_05_Cache Through
参考资料: http://www.ehcache.org/documentation/3.2/caching-patterns.html http://www.ehcache.org/document ...
- Java 类的构造器的调用顺序
规则如下: 对于一个复杂的对象,构建器的调用遵照下面的顺序: (1) 调用父类构建器.这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个子类,等等.直到抵达最深一层的子类. (2) ...
- TestNG,多个场景结合运行Suite.xml
方法一.首先新增一个.xml文件(经过一段时间的练习,找到其他方法添加XML,如下) 再到文件中添加如下: <suite name = "Selenium school"&g ...
- VS2017编译项目出现提示al.exe运行失败的解决方法
VS2013中编译一切正常,用VS2017打开项目,某个类库出现al.exe运行失败的解决方法,事件查看器中这样描述 “C:\Program Files (x86)\Microsoft SDKs\Wi ...
- 作业列表 of《软件测试技术》
作业1(截止时间3月22日) 请使用excel模板或word模板,完成对126邮箱登录功能的测试用例编写,界面如下图.提交到ftp. --------------------------------- ...
- Angular----安置物流项目前端框架经验总结
一.架构方面 (一) Angular框架有service .controller层: 在Angular里面,services作为单例对象在需要到的时候被创建,只有在应用生命周期结束的时候(关闭浏览器) ...
- C# RedisRateLimiter
public class RedisRateLimiter { private static Logger LOG = LogManager.GetLogger("redis-limiter ...
- vue请求本地json数据
1.下载vue-resource插件 cnpm install vue-resource 1.2全局引入vue-resource: 在main.js import VueResource from ' ...
- laravel中设置表单的方式,以及获取表单的提交的数据