在C++Builder中定义事件的实现方法
++Builder是由Borland公司推出的一款可视化集成开发工具。C++Builder的集成开发环境(IDE)提供了一系列可视化快速应用程序开发(RAD)工具,让程序员可以很轻松地建立和管理自己的程序和资源。那么我们今天就来学习一下在C++Builder中定义事件的实现方法吧。
一、事件
大家是否知道在C++Builder中,事件是一种怎样的存在呢?其实事件就是一种委托模型,它是对于消息的封装。假如说大家都已经使用过VC(MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。)的话,那么各位都应该知道在VisualC++中,是并没有什么事件存在的。有的仅仅只是消息处理函数,然而C++Builder中就是由事件处理函数来负责响应消息。

除此之外,事件自己本身也属于是一个指针,它是一个闭包来的。一般情况下,在C++Builder中有两种事件。这两种事件分别是自定义事件以及通知类型事件(就是我们说的TNotifyEvent指针,它是对于Windows消息的封装)。另外一个方面,相信大家也应该知道一点,那就是事件是通过一个虚拟函数点燃起来的。就好像说:ONEXIT事件就是由DOEXIT虚拟函数点燃起来的。那么为了方便大家的理解,小编在这里会编写一个关于自定义事件的示范例子。对于自定义事件最需要了解的一点是,大家的代码都一定会导致这些事件发生。这些事件不会为响应用户或系统的动作而自动发生,就算是可以编写导致事件确实以这种方式发生的代码也不例外。如果大家想要了解通知类型事件的话,大家可以在网上搜索一下资料,小编在这里就不详细的介绍了。
二、示范例子
有关于自定义事件的具体编程代码,如图所示:


大家看完以上的编程代码,其实可以十分明显的看出小编所编写代码中的事件就是对于WM_MYMESSAGE消息的封装。那么大家在上面的源代码中,应该可以在OBJECTINSPECTOR中,看到一个ONMYEVENT的事件,这个事件其实是和其它事件一模一样的。各位朋友只需要把编程代码写到这里来,那么就可以完成响应消息了。除此之外,大家还可以根据应用的需求来给出这个事件触发时候的行为。好吧,上面编程代码是有点点简陋,毕竟只是小编随手编写出来的。如果大家有兴趣的话,可以自已加以调整一下,编写出一个更加完美的源代码哟。
在C++Builder中定义事件的实现方法的更多相关文章
- Backbone.js 的 View 中定义事件
使用 Backbone 的 View 时,可以象传统 jQuery 那样定义事件,$("selector").click(function(){...}).幸运的是 Backbon ...
- Windows Server 2008中关闭事件跟踪程序的方法
Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...
- WebApi一个控制器中定义多个Get方法。
问题:怎样解决一个ApiController中定义多个Get方法或者Post方法? 答:要想实现一个ApiController中定义多个Get方法或者Post方法,则需要在WebApiConfig类中 ...
- stm32存储器映像和标准库中定义外设地址的方法
结合存储器映像理解stm32标准库中定义外设地址的方法. stm32f103zet6是32位的.它所能访问的地址空间范围为2^32=4GB,把4GB分为8个block,分别为block0-block- ...
- MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)
今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...
- MySQL中存储过程+事件的使用方法
一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...
- js中获取事件对象的方法小结
原文地址:http://jingyan.baidu.com/article/d8072ac4594d6cec95cefdac.html 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局 ...
- 关于在Android中添加事件监听器的方法
一.匿名内部类 1.先找到那个控件(初始化) private Button bt1; //onCreate方法外 bt1 = (Button)findViewById(R.id.button1); ...
- ansible中定义变量的若干方法
Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...
随机推荐
- 分割字符串(C++)
方案1: 利用"IO流"的概念,即C++中的stream,我们都用过C++中std::iostream中的std::istream与std::ostream 如果你接触过网络编程( ...
- vue项目中禁止移动端双击放大,双手拉大放大的方法
在vue打包后生成的dist目录文件下下面有index.html 打开里面 把原来的这个 <meta name=viewport content="width=device-width ...
- maven 中 指定jdk 和 编译编码,仓库位置
<!-- 配置编译选项 --> <profile> <id>jdk1.8</id> <activation> <activeByDef ...
- Margarite and the best present
Little girl Margarita is a big fan of competitive programming. She especially loves problems about a ...
- Photoshop入门教程(六):通道
学习心得:当大部分人听到通道.心里可能会有一种很害怕的感觉,因为“通道”并不像“图层”这样易于理解,望而生畏.”通道“的本质其实是存储图片的信息,把一张图片比作一个为网站,那么通道就是网站的后台,存储 ...
- MongoDB安装为windows服务
MongoDB 下载 下载地址:http://www.mongodb.org/downloads 下载安装完成之后 第一步 创建D:\Program Files\mongodb\data 目录第二步 ...
- math.random()方法的使用
一:导言 以前总是被数字的范围正则搞的头大,在此总结了一下 二:用法 Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: ...
- windows 7 下安装VMWARE 和 red-hat 7 64bit
按F2 进入BIOS: 在inter virtualization technology 选择YES 就可以安装linux 64bit 操作系统了 https://blog.csdn.net/coco ...
- oracle count(*) 和count(列)性能
一直以为oracle中count(列)比count(*) 快,这篇文件解释了一下: http://blog.csdn.net/szstephenzhou/article/details/8446481
- CAD安装失败怎样卸载CAD 2013?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...