`
禹爸爸
  • 浏览: 87609 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Delphi中的消息机制

阅读更多

许多的面向对象程序设计语言都支持对消息的处理。消息处理是一种动态响应客户类发出的请求,它与过程调用不同。过程调用中,客户类必须知道服务类提供了哪些过程,以及每个过程的调用约定,并且在调用时需要明确指出要调用服务类中的哪个过程,相当于静态地将客户类与服务类进行了某种调用关系的绑定,这将导致客户类与服务类的耦合度增加。消息处理则是动态的,当客户类需要某程服务时,会向服务类发送一个消息,当服务类收到此消息后,会检查自己是否有响应此消息的处理过程,如果有则调用该过程。我们可以举个例子来说明这两种处理方式的不同。比如我们想从A城市到B城市去,一种方法是你知道酒店商务中心提供订票服务,打电话订一张机票,这相当于是过程调用,你明确的知道谁可以提供服务,提供哪种服务;另一种方法是打电话到洒店前台,说你要一张前往B城市的机票,需要其帮你准备,稍后前台就会告诉你是否准备好了,我们并不知道前台是否提供这种服务,只是说出了我们的要求(发送消息给前台)。

下面我们以Delphi为使用语言,说明在程序设计中消息是如何定义、发送和处理的。在Delphi中声明消息处理过程之前,首先要定义一个消息常,其值为一个整数(取值范围在1到49151之间),一般我们会使用Messages单元中定义的WM_USER常量作为基数。

const
CM_EmbeddableFormClose
=WM_User+$01;

 

一般情况下Windows消息是使用WM_作为前缀,表示Windows Message;用户自定义的消息则以CM_作为前缀,表示Customer Message。

在定义好消息之后,就需要定义一个处理该消息的消息过程。消息方法是由消息发分发而触发的,不需要程序员显示的调用,所以一般都是将其声明为一个类的私有方法Private,当然如果该类的子类需要改写这方法,则可以将其声明为保护方法Protected

Type
TMessageTester
=class
private
procedureEmbeddableFormClose(VarMsg:TMessage);MessageCM_EmbeddableFormClose;
public
......
end;

此处仅为了说明消息方法的使用,故没有列出其全部的代码。由于它被声明为私有方法,所在在客户类中是看不到这个方法的,也就无法通过指定方法名的方式调用,但我们可以使用发送消息来调用这一方法。

PostMessage(HostForm.Handle,CM_EmbeddableFormClose,0,Handle);
Application.ProcessMessages;

这样我们就向服务类(即上面代码中的HostForm)发送了CM_EmbeddableFormClose消息,服务类在查找到该消息的处理方法时即执行该方法中的代码。

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Delphi消息处理机制

    Delphi消息处理机制是Delphi编程中的核心概念,它基于Windows操作系统的消息驱动体系。在Windows系统中,消息传递是程序间交互和控制的主要方式。每当发生用户输入、界面更新或其他事件时,系统都会生成相应消息并放...

    DELPHI中的消息处理机制.doc

    DELPHI中的消息处理机制.doc

    delphi消息处理示例

    本文将深入探讨“delphi消息处理示例”中的知识点,以帮助开发者理解如何有效地使用消息机制。 首先,我们要理解的是,Delphi中的消息处理基于Windows操作系统的消息队列模型。每个窗口都有一个消息队列,当用户与...

    delphi 接收进程消息机制

    本文将详细探讨 Delphi 中如何利用进程消息机制来接收和发送数据,以及如何时刻监控消息的到来。 首先,理解 Delphi 中的进程消息机制。Windows 操作系统提供了基础的消息队列和消息处理机制,允许进程之间通过消息...

    DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息).mht

    DELPHI中的消息处理机制(三种消息处理方法的比较,如何截断消息).mht

    Delphi消息机制的研究.pdf

    通过上述分析可以看出,文档“Delphi消息机制的研究”将全面而深入地探讨Delphi中消息处理的各个方面,包括消息的基本概念、消息循环的实现方式、窗口过程的作用及其实现方法、消息映射和消息钩子的应用场景,以及多...

    Delphi_的消息机制浅探.doc

    Delphi的消息机制是其核心组件VCL(Visual Component Library)的基础之一,它基于Windows操作系统中的消息处理模型。本文将深入探讨Delphi中的消息机制,帮助读者理解如何在Delphi应用程序中处理和传递消息。 首先...

    Delphi使用消息类型

    在Delphi编程环境中,消息类型(Message Types)是一种强大的机制,允许程序员在应用程序的不同组件之间传递数据和控制信息。在Windows API中,消息系统是基于Windows消息(Windows Messages)的,而Delphi提供了与...

    Delphi 自定义消息的使用

    在 Delphi 编程中,自定义消息是一种有效的通信机制,允许组件或对象之间传递特定信息,不依赖于已有的标准消息。本教程将详细解释如何在 Delphi 中创建和使用自定义消息。 首先,自定义消息是通过定义一个常量来...

    Delphi-的消息机制浅探.doc

    接下来,我们将深入研究Delphi中的消息机制,特别是围绕TObject、TControl和TWinControl这三个关键类。 ⊙ TWinControl.Create、注册窗口过程和创建窗口 在创建一个TWinControl派生的对象时,`Create`方法会被调用...

    Delphi Message 消息处理演示程序(源代码)

    1. 演示System.Messaging....3. 演示Delphi自带的对象Dispatch消息机制 4. 实现了传递记录体的消息机制 5. 演示了System.Messaging.TMessageManager的广播机制 6. 包含全部源代码,彻底理解Delphi的消息机制

    Delphi的消息机制浅探[参照].pdf

    Delphi的消息机制是其核心编程模型的重要组成部分,它基于Windows的消息驱动系统,使得应用程序能够响应各种用户交互和其他系统事件。然而,本文件主要探讨的是Delphi的对象机制,而非消息机制,我们将聚焦于此。 ...

    delphi 传递消息

    在Delphi编程环境中,消息传递是实现组件间通信和异步操作的重要机制。本文将深入探讨Delphi中的消息传递机制,以及如何在实际项目中应用。 首先,我们要了解消息队列(Message Queue)的概念。在Windows操作系统中...

    delphi 异步消息通知

    首先,异步消息通知是程序设计中的一种机制,它允许一个任务在不等待响应的情况下继续执行其他任务。这种方式可以提高系统的响应性和效率,特别是在处理耗时操作时,如网络通信、数据库交互等。在Delphi中,我们可以...

    delphi 截获关机消息

    在Delphi中,我们可以创建一个消息处理函数来响应特定的消息类型。例如,在`TForm1`中定义一个名为`wmQueryEndSession`的函数,声明为`message WM_QUERYENDSESSION`,这样它将专门处理`WM_QUERYENDSESSION`消息。 ...

    delphi消息发送源码

    本文将详细解析"delphi消息发送源码"中的关键知识点,包括Delphi的消息机制、如何向Edit控件发送消息,以及如何在窗口和控件间进行消息传递。 首先,我们需要理解Delphi的消息机制。Delphi基于VCL(Visual ...

    Delphi捕获消息代码,含注释..rar

    在Delphi编程环境中,消息处理是程序与操作系统交互的关键机制之一。消息系统使得应用程序能够响应用户的操作、系统事件以及与其他程序的通信。本资源“Delphi捕获消息代码,含注释”提供了一种实现这一功能的方法,...

Global site tag (gtag.js) - Google Analytics