首页 C++Builder中的事件响应及其编程方法

C++Builder中的事件响应及其编程方法

举报
开通vip

C++Builder中的事件响应及其编程方法 第 2期 2003年 4月 微 处 理 机 M ICROPROCESSORS NO.2 Apr..2003 C++Builder中的事件响应及其编程方法 陆 斌 ,肇启红。 (1.海军航空工程学院自动控制系,烟台 264001;2.沈阳市铁西区中心医院,沈阳 110021) 摘 要 介绍了Borland C Builder编程语言中对事件响应 的编程方法,对于每一种方法给 出了相应 的示例。 关键词 C Builder 事件响应 The ways to Program t...

C++Builder中的事件响应及其编程方法
第 2期 2003年 4月 微 处 理 机 M ICROPROCESSORS NO.2 Apr..2003 C++Builder中的事件响应及其编程方法 陆 斌 ,肇启红。 (1.海军航空工程学院自动控制系,烟台 264001;2.沈阳市铁西区中心医院,沈阳 110021) 摘 要 介绍了Borland C Builder编程语言中对事件响应 的编程方法,对于每一种方法给 出了相应 的示例。 关键词 C Builder 事件响应 The ways to Program to the Respond to the Events in the C++Builder Lu Bin.et al (Navy Aeronautice Engineerlng Institute Department of Automatic Control Engineering,Yantai 264001) Abstract The ways to program the respond to the events in the Borland C Builder program language are introduced in this paper,and all the examples are presented for every input events. Keywords C Builder,respond to the events 1 引 言 对外部设备产生事件响应是计算机的重要功 能,外部设备包括输入设备和输出设备。外部设备一 般在使用中均有其驱动程序 ,因此在程序的控制中 对它们的使用主要是利用相对 比较固定的方法。而 输入设备的使用 由于其驱动程序较为通用,因此使 用的方法灵活多样。在这里将针对输入设备的使用 方法做一个仔细的介绍。 输入设备是指人能对计算机发出指令的设备, 通用的这种设备有键盘、鼠标、游戏杆等,正是通过 对这些设备的准确使用使得计算机 的功能非常强 大,即具备了人一机交互功能 ,操作者通过输入设备 可以实时控制计算机各种程序的执行 ,计算机通过 屏幕和其它输出设备把执行情况实时地反馈给操作 者。这种功能是各种控制程序中必须具备的,而实现 程序的各种编程语言中也都有其相应的实现方法。 本文就 目前流行 的编程语言 Borland C— Builder (以下简称 C” Builder)具体全面地介绍其输入设 备的事件响应及其编程方法。 具,目前的版本已经发展到 了 6.0版。C Builder 不但继承了 C” 结构化语言的特点,而且采用了与 微软公 司的 Visual Basic语言非常类似 的用户界 面,可以说,C+十Builder是 Visual Basic外观和 C十+ 内涵相结 合 的一个优秀 产物。对于 那些使用过 Visual Basic和 Visual C 的程序员,C Builder 无 疑是 结合 了两者优 点的编 程语言。作 为一种 Windows下的GUI式的 OOP语言,C Builder强 调可视性、反馈性和调试功能。 可视性 :用户在进行 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 程序时不再进行封闭 式的代码编辑,整个程序编辑过程方便直观。 反馈性 :用户和 C” Builder之间,无论是在程 序设计阶段 ,还是在程序运行期间,两者之间始终都 有 良好的交互和反馈。 调试功能:C十+Builder提供 了集成调 试器 ,大 大方便了用户对程序的调试过程。 C” Builder可以实现 Windows的绝大多数高 级功能,如多重窗口、对象的链接与嵌入(OLE)、动 态数据交换 (DDE)、动态链接库 (DLL)函数的调 用、字体、颜色选择及文件列表对话框等。 2 Borland C++Builder编程语言 3 C++Builder中对输人设备的事件响应 C Builder编 程 语 言 是 由 Borland公 司 于 1998年推出的一种 32位 Windows可视化开发工 如图 1所示,C”Builder中键盘和 鼠标的事件 响应均可以在其 Object Inspector窗口中的下拉事 陆I_c,男,36岁,硬士研究生,讲师 ,主要从事计算机图像处理方面的教学、科研工作 收稿日期I2002一l2—02 维普资讯 http://www.cqvip.com 键 鼠 · 34· 微 处 理 机 2003年 件中找到。 (1)对键盘的输入响应 C” Builder中 键 盘 响 应 的 语 法 为 :void— fastcall TObject::ObjectlKeyDown(TObject * Sender,WORD&Key,TShiftState Shift){)这里的 Object1代表窗体、按钮、文本框等所有可视化的控 件; KeyPress表 示 键 盘 响应 的所 有 事件 ,包 括 KeyDown事件(某个键按下时)、KeyUp事件(某个 键按下后弹起 时)和 KeyPress事件 (当按了某个键 时); &Key代表 了计算机键盘每个键的编码,C— Builder中的字母、数字键编码为“VK一”+键名。但 需要注意的是其它键要用其名字 ,例如方向“左”键 编码为“VK—LEFT”。下面列出一些常用的键的编 码 : VK—BACK Backspace键 VK—TAB Tab键 VK—RETURN Enter键 vl(一SHIFT Shift键 VK—C0NTR0L Ctrl键 VK—PAUSE Pause键 VK—CAPITAL Caps Lock键VK—ESCAPE Esc键 VK—SPACE Space键 VK—END End键 VK—H0ME Home键 VK—LEFT方向左键 VK—UP 方向上键 VK—RIGHT方向右键 VK—DOWN 方向下键 VK—PRINT Print键 VK—INSERT Insert键 VK—DELETE Delete键 VK—NUMPAD0数码键盘0 VK—NUMPADI数码键盘9 VK—F1 F1键 VK—FI2 FI2键 图 1 C— Builder的事件下拉窗 口 Shift值表示是否选择 SHIFT键、CTRL键、和 ALT键或者是它们的组合 。 用键盘在人机交互中完成对屏幕中物体的控制 功能时常会用到上、下、左、右几个方向键。例如对某 一 可视控件 Objectl的位置进行控制(按一下左键 就使其向左移动 5个单位),可 以用下面的程序实 现 : void— fastcall TForml:: Object1KeyDown (TObject* Se nder,WORD &Key,TShiftState Shift) { if(Key ==== VK-- LEFT) { Objectl一 > left= Objectl一 > left一 5; //按下左键控件左移 5个单位 ) ) (2)对鼠标的响应 C Builder中对 鼠标的响应有以下事件:(以 下的 Objectl均代表窗体、按钮、文本框等所有可视 化的控件) a.Click事件:语法为 void—fastcall TForml:: ObjectlClick(TObject*Sender){),表示控件对按 下鼠标左键时的响应。 b. DblClick 事 件 :语 法 为 void—fastcall TForml::ObjectlDblClick(T0bject*Sender){), 表示控件对双击鼠标左键的响应。 C.DragDrop一—事 件:语 法 为 void—fastcall TForml:;ObjectlDragDrop(TObject *Sender, TObject*Source,int X,int Y){),表示对一个控 件按下鼠标左键不放拖动到另一个控件上放开左键 时的响应 ,这里 Source表示被拖动的控件;X、Y表 示 鼠标光标位置的水平和垂直坐标值。 d.DragOver事 件:语 法 为 void—fastcall TForml::ObjectlDragOver(TObject *Sender, TObject*Source,int X,int Y,TDragState State, bool~ ccept){),表示对一个控件按下 鼠标左键不 放拖动到另一个控件上时的三种状态 的(进入、离 开、移动)响应。这里 Source表示被拖动的控件;X、 Y表示 鼠标光标位置的水平和垂直坐标值;State值 可以为 0、1、2,分别表示进入、离开、移动三种状态 , Accept状态代表该控件对此功能是否支持。 e.MouseDown事 件:语 法 为 void—fastcall TForml::ObjectlMouseDown(TObject*Sender, TM ouseButton Button,TShiftState Shift,int X ,int Y){),表示按下鼠标键的响应。这里Button表示选 维普资讯 http://www.cqvip.com 2期 陆斌等 ;C— Builder中的事件响应及其编程方法 ·35· 择的是鼠标的左键、右键、中键或者它们的组合;X、 Y表示鼠标光标位置的水平和垂直坐标值 ,Shift值 表示是否选择 SHIFT键 、CTRL键和 ALT键或者 是它们的组合。 f.MouseMove事 件 :语 法 为 void—fastcall TForml::ObjectlMouseMove(TObject*Sender, TShiftState Shift,int X,int Y){),表示对 鼠标光标 移动的响应。这里 Button表示选择的是 鼠标的左 键、右键、中键或者它们的组合 ;X、Y表示鼠标光标 位置的水平和垂直坐标值 ,Shift值表示是否选择 SHIFT键 、CTRL键、和 ALT键或者是它 们的组 合。 g.MouseUp 事 件 :语 法 为 void—fastcall TForml::ObjectlMouseUp(TObject * Sender, TM ouseButton Button,TShiftState Shift,int X,int Y){),表示对放开 鼠标键的响应。这里 Button表示 选择的是 鼠标的左键 、右键、中键或者它们的组合; X、Y表示鼠标光标位置的水平和垂直坐标值 ,Shift 值表示是否选择 SHIFT键、CTRL键、和 ALT键 或者是它们的组合。 在 C— Builder中用鼠标响应事件来完成人机 交互中的控制功能非常方便 ,例如把一个控件的位 置移动到鼠标光标的位置,可以通过下面简单的程 序完成(控件为 Object1): void— fastcall TForml::ObjectlMouseMove (TObject*Sender,TShiftState Shift,int X,int Y) { Object1一~left=X; Object1一>t0p=Y;//控件的水平和垂直方 向的值分别与鼠标的光标位置一致 ) (3)对游戏操纵杆的响应 C“ Builder中对游戏操纵杆的响应需要利用 Win32 API的 MCI提供的一组检测游戏操纵杆、确 定操纵杆性能、位置、按钮信息的函数实现。这些函 数主要包括 : JoyGetNumDevs检查驱动器支持的游戏操纵 杆数 JoyGetPosEx确定游戏操纵杆是否已连接 J0yGetDevCaps获取游戏操纵杆性能的信息 JoySetCapture通知 Windows操纵杆消息应发 送到哪里以及发送的频率 J0yReIeaseCpture释放指定的游戏操纵杆 其中最常用的是获取游戏操纵杆消息的函数, 它的语法为 joyGetPos(JoysticklD,8~Joylnfo)。这里 的参数 JoysticklD,表示连接的游戏杆是 ID1还是 ID2;Joylnfo表示的是位置信息,它有三个位置信息 Joylnfo.wXpos、Joylnfo.wYpos、Joylnfo.wZpos分 别代表在空间 x、Y、z方向上的位置,这些位置信息 的值一般为 0到 65535,反映了游戏杆从一端拉到 另一端的最大位置变化为 65535。 游戏操纵杆在某些需要对 目标位置进行控制的 操作中是非常方便的。下面的程序可以完成利用游 戏杆操纵来控制一个控件位置的功能: 在程 序 的 头 文 件 中 需 要 加 入 “#include< mmsystem.h>”语句,这里控件为 Objectl。 J0YINF10 Joyhfo; joyGetPos(JoystickID,8doylnfo); //获取游戏杆信 息 int X,Y; X=Joylnfo.wXpos; //x为游戏杆的水平方向的值 Y=Joylnfo.wYpos; //Y为游戏杆的垂直方向的值 Object1.1eft=X; Object1.top=Y; //使控件的位置与游戏杆的位置信 息一致 JoyReleaseCapture(JoysticklD); //释放游戏杆信息 4 结 论 本文介绍的输入设备及其编程方法代表了目前 计算机最主要和最具代表性的通用输入控制方法。 由于用 C—Builder编程相对容易学习掌握,开发程 序简单灵活,使得掌握了对输入设备事件响应的编 程方法后,编写人一机交互的控制程序非常易于实 现,这种交互控制的灵活性在工程实践中非常明显。 本文中所有程序代码均 已在 Window~98操作系统 下的 C— Builder5.0中编译通过。 参考文献 1 清宏计算机工作室.C— Buidler编程技巧.北京 :机械工 业出版社 ,2001 2 袁辉等.Borland C Builder高 级编程.北 京:科学 出版 社 ,2000 维普资讯 http://www.cqvip.com
本文档为【C++Builder中的事件响应及其编程方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_401653
暂无简介~
格式:pdf
大小:137KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2013-04-07
浏览量:25