第二章 第三节 取得鼠标输入
来源:互联网 发布:windows 磁盘分区 编辑:程序博客网 时间:2024/05/17 08:15
取得鼠标输入
取得鼠标的输入和键盘很像。DirectInput在这两者之间很一致。使用相同的过程来创建设备;我们仅需要在枚举中指定鼠标而不是键盘。创建设备的代码如下:
MouseDev = new Device( SystemGuid.Mouse );
MouseDev.SetCooperativeLevel(m_form, CooperativeLevelFlags.Exclusive |
CooperativeLevelFlags.Foreground);
MouseDev.SetDataFormat(DeviceDataFormat.Mouse);
用鼠标的最大的区别是使用鼠标的数据。KeyboardState类表示键盘键的状态,我们使用MouseState类来表示鼠标的状态。此类包含了鼠标的状态以及鼠标X, Y和Z移动值的三个整数。我知道你也许会搔头问到,“Z!什么时候鼠标有三维的?”微软授予现代鼠标上的滚动轮为Z。鼠标的数据结构声明如下:
MouseState m_mousedata = new MouseState();
正如键盘,我们必须调用设备的方法Acquire来附加设备到硬件上,和Poll去从硬件上读取最新的数据。Polling我们可以从鼠标设备取得数据的拷贝:
m_mousedata = MouseDev.CurrentMouseState;
鼠标数据就如键盘数据使用。相应的位被置位如果某个按键被按下。Button 0是主键。虽然这是默认的左键,但是不要假定总是这样。通过Windows有可能指定右键是主按键(想想左撇子用户)。
鼠标数据结构里的轴数据表示至最后一次检查鼠标数据起的每个方向上移动的数量。遵从常用的微软坐标定义,X值右正左负。Y值前向正后向负。Z值向前旋转是正向后旋转是负。我们每帧只poll一次鼠标,搞清楚这个很重要。否则我们将会发现为什么鼠标的轴数据总是0。因为轴数据是相对上一次poll的。第二次poll将几乎总是0,除非鼠标在两次poll之间移动的飞快。
正如键盘,在我们用完鼠标后必须记得使用方法Unacquire来接触设备的附加。这会通知操作系统我们以及用完这个设备了。
- 第二章 第三节 取得鼠标输入
- 第二章 --- 第三节
- 第二章 第三节
- 【第二章 第三节】
- [第二章]第三节、扩展HelloWorld实例
- 第二章:第三节:PVPlayerEngine的实现。
- Programming MS Office 2000 Web Components第二章第三节
- 网络营销教程—SEO 第二章 搜索引擎(第三节)
- 第二章 第三节 Linux设备驱动程序之--模块参数
- F#入门-第二章 F#基础-第三节 运算符
- 第二章 第三节 Linux设备驱动程序之--模块参数
- 第三章 ---- 第三节
- 第二章第三节. 吕布卖出了999把梳子
- (11)'c++:COMPLETE REFERENCE' 第一部分 第二章(表达式) 第三节
- 第二章 需求和供给理论(第三节:需求弹性)
- 《Moblin非官方教程》系列连载 第二章--第三节--集成开发环境
- MINA2.0用户手册中文版--第二章 第三节 TCP客户端实例
- MINA2.0用户手册中文版--第二章 第三节 TCP客户端实例
- 处理CSV格式行的算法
- 关于中文乱码问题的一些解决方案和经验
- 第二章 用户接口 第一节 简介
- 第二章 第二节 取得键盘输入
- 2007年十大财经新闻
- 第二章 第三节 取得鼠标输入
- linux启用telnet服务
- 计算机语言妙语录 软件就像性一样
- VC操作excel表格
- 新歌谣
- spring 错误(org.springframework.beans.NotWritablePropertyException)
- 在EXCEL中自动产生图表、背景并设定保护模式
- 编码规范
- OLE程序开发EXCEL