在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 ...
随机推荐
- SQL-Error-1
错误描述:String or binary data would be truncated. 原因:字段长度不够
- 服务器查看外网IP地址和方法
返回IP地址 curl ip..com/ip.aspx curl whatismyip.akamai.com wget -qO - ifconfig.co curl icanhazip.com dig ...
- 2048小游戏(Java)(swing实现)(二)
这里是上一次的成果,只能用鼠标点,没法用键盘 最近扩充了一下知识面,实现了用键盘操控2048小游戏 但是还是不支持同时使用键盘和鼠标同时操作 import javax.swing.*; //impor ...
- hdu 6288(二分法加精度处理问题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6288 题意:给出a,b,k,n可满足(n^a)*(⌈log2n⌉)^b<=k ,求最大的n值三个 ...
- set与map
set /*set里面没有相同的元素 所以可以用于数组去重*/ //内部去重用的是=== 对象不等 但是 NaN等 //其本身是构造函数 let s=new Set([1,2,{},{},3,4,Na ...
- 这是通过 Open Live Writer(是个博客编辑器) 发布的
Open Live Writer 是开源的win10上的博客编辑器
- 剑指offer中经典的算法题之从头到尾打印链表
话不多说上代码: 我自己的算法是: /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int ...
- [转]js add month 加n月
本文转自:http://stackoverflow.com/questions/5645058/how-to-add-months-to-a-date-in-javascript/5645126 I ...
- [转]how can I change default errormessage for invalid price
本文转自:http://forums.asp.net/t/1598262.aspx?how+can+I+change+default+errormessage+for+invalid+price I ...
- jemeter排至数据库时报:Access denied for user 'root'@'localhost' (using password:YES) 解决方案
相信这个问题大部分人都遇到过,至少我遇到过三次了,而且每次原因都不一样,前段时间同学也遇到这个问题,问我怎么解决,我把我的解决思路都说了一遍,发现还不行,最后居然是另外一个原因...哎,说多了都是泪, ...