++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中定义事件的实现方法的更多相关文章

  1. Backbone.js 的 View 中定义事件

    使用 Backbone 的 View 时,可以象传统 jQuery 那样定义事件,$("selector").click(function(){...}).幸运的是 Backbon ...

  2. Windows Server 2008中关闭事件跟踪程序的方法

    Windows Server 2008跟Windows Server 2003一样,在关机的时候会弹出一个“关闭事件跟踪程序”窗口,当然微软这么做是处于安全的考虑啦,但是如果我们只是个人用用的话,那就 ...

  3. WebApi一个控制器中定义多个Get方法。

    问题:怎样解决一个ApiController中定义多个Get方法或者Post方法? 答:要想实现一个ApiController中定义多个Get方法或者Post方法,则需要在WebApiConfig类中 ...

  4. stm32存储器映像和标准库中定义外设地址的方法

    结合存储器映像理解stm32标准库中定义外设地址的方法. stm32f103zet6是32位的.它所能访问的地址空间范围为2^32=4GB,把4GB分为8个block,分别为block0-block- ...

  5. MVVM Light 新手入门(3) :ViewModel / Model 中定义“事件” ,并在View中调用 (无参数调用)

    今天学习MVVM架构中“事件”的添加并调用,特记录如下,学习资料均来自于网络,特别感谢翁智华 的 利刃 MVVMLight 6:命令基础 在MVVM Light框架中,事件是WPF应用程序中UI与后台 ...

  6. MySQL中存储过程+事件的使用方法

    一.背景 将界面操作日志存储在MySQL数据库中的operationlog表中,如果该表不能自动备份,表中的数据会越来越多,影响速度.可以定期将表中数据备份到另外一个表中来解决. 二.解决方案 1.使 ...

  7. js中获取事件对象的方法小结

    原文地址:http://jingyan.baidu.com/article/d8072ac4594d6cec95cefdac.html 事件对象 的获取很简单,很久前我们就知道IE中事件对象是作为全局 ...

  8. 关于在Android中添加事件监听器的方法

    一.匿名内部类 1.先找到那个控件(初始化) private Button bt1;  //onCreate方法外 bt1 = (Button)findViewById(R.id.button1); ...

  9. ansible中定义变量的若干方法

    Ansible支持十几种定义变量的方式 根据优先级排序的定义方式: Inventory变量 Host Facts变量 Playbook变量 Playbook提示变量 变量文件 命令行变量 1.Inve ...

随机推荐

  1. js删除数组中的 "NaN"

    [注意] js中的NaN不和任何值相等,包括自身 所以可以使用 x!=x 来判断x是否是NaN,当且仅当x为NaN时,表达式的结果为true NaN != NaN ; //true 可以依此删除数组中 ...

  2. JAVA Font类

    java.awt.Font 设计字体显示效果 Font mf = new Font(String 字体,int 风格,int 字号); 字体:TimesRoman, Courier, Arial等 风 ...

  3. my11_mysql事务隔离

    概述 ************************************************ Mysql有四个事务隔离级别,默认隔离级别为RR,开启一个事务可以使用 START TRANSA ...

  4. apply,call,bind

    /*apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了改变函数内部this的指向): 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是 ...

  5. windows系统打开火狐浏览器提示“无法加载你的firefox配置文件”

    win7系统自带IE浏览器,还是有部分用户使用不习惯,选择下载第三方浏览器,比如:火狐.谷歌.360浏览器等.最近有Win7系统用户在重新安装火狐浏览器后发现打不开,并提示“无法加载你的firefox ...

  6. 前端面试题 ---- html篇

    想要换工作了,转载自https://www.cnblogs.com/zhangshuda/p/8464772.html,感谢原博主. 一.html 1.html和xhtml区别 1. html:超文本 ...

  7. cout和printf不能混用

    1.两者的缓存机制不同:printf无缓冲区,而std::cout有 (其实printf也是有缓冲区的,https://blog.csdn.net/ithzhang/article/details/6 ...

  8. XAMPP: Another web server is already running

    nginx 和 xampp 一起使用的时候,如果 nginx先启动,然后 再启动 xampp的时候,就是修改了 http.conf也是会报如果错误 liaohb@ubuntu-xtn->$sud ...

  9. Murano Weekly Meeting 2015.09.22

    Meeting time: 2015.September.22th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting s ...

  10. Deferred跟promise跟js同步问题记录

    之前的时候,碰到过几次同事问我,说js的同步怎么处理,就是我想先执行这段代码(耗时相对较长的一行,多数是异步的一些api调用),执行完了之后我再执行下边这句,每次我都很无奈的说不晓得,如果是ajax的 ...