++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. 如何从GAC中复制DLL文件

    运行执行:c:\Windows\assembly\gac_msil

  2. redis 学习字符类型 hash

    > HSET userinfo1 username "king" (integer) > HSET userinfo1 passowor " (integer ...

  3. Jenkins自动化CI CD流水线之4--Master-Slave架构

    一.介绍 jenkins的Master-slave分布式架构主要是为了解决jenkins单点构建任务多.负载较高.性能不足的场景. Master/Slave相当于Server和agent的概念.Mas ...

  4. python3 sorted()函数笔记

    import randoma=[]for i in range(9): b=random.randint(0,9)#生产9个随机数 a.append(b)#把生成的随机数添加到列表里面print(so ...

  5. 新磁盘创建lvm并挂载

    ### .查看硬盘 fdisk -l ### 删除分区 fdisk /dev/sdc ### 按d删除,按w保存并退出 ### 创建pv pvcreate /dev/sdc ### 创建 vg vgc ...

  6. my16_sql_thread执行慢导致主从延迟高的一个情景

    现象:从库延迟高,查看slave status发现sql_thread执行语句的速度比主库慢,这样的延迟会一直高下去,下面是排查的一些过程1. 检查了从库的配置,磁盘的写入速度的确没有主库高2. io ...

  7. canvas基础入门(一)canvas的width、height于css样式中的宽高区别

    canvas的width.height于css样式中的宽高对画布的内容显示是有所区别的 1.在canvas标签下调用他的width和height,而且是没有单位的宽高,这种指定canvas大小的方法也 ...

  8. Android Studio配置及使用OpenCV

      1.下载及目录介绍 进入官网(http://opencv.org/)下载OpenCV4Android并解压(这里是OpenCV-3.2.0-android-sdk).下面是目录的结构图: sdk  ...

  9. 性能测试工具LoadRunner13-LR之Virtual User Generator 创建java脚本以及小结

    Java vuser是自定义的java虚拟脚本,脚本中可以使用标准的java语言. 环境配置 1.安装jdk(注意:lr11最高支持1.6) 2.配置环境变量 3.在lr选择java Vuser协议 ...

  10. Murano Weekly Meeting 2015.10.06

    Meeting time:  2015.October.6th 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summar ...