实例1

unit Unit1;

interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
 
 const
WM_ME=WM_USER+100; //自定义消息;
 type
 TForm1 = class(TForm)
    Button1: TButton;
procedure  Button1Click(Sender: TObject);
//第一种消息处理方式; 只能处理常量消息;
    procedure  wmme(var message:TMessage);message WM_ME; //自定义消息处理过程,专门处理WM_ME消息; private
   { Private declarations }
 public
{ Public declarations }
//第二种消息处理方式;可能处理常量或变量消息;
procedure  WndProc(var message:TMessage);override; //重载窗口消息过程
//第三种消息处理方式
    procedure  WMCommand(var Message: TWMCommand); message WM_COMMAND; //命令消息处理过程
    procedure WMSysCommand(var Msg:TWMSysCommand);message WM_SYSCOMMAND; //处理系统性消息;
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
 
procedure  TForm1.Button1Click(Sender: TObject);
begin
   SendMessage(Handle,WM_ME,0,0); //发送消息WM_ME ; 消息先由WndProc处理,再交给wmme处理;
end;
 
procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  //下面代码的作用是,用户如果点击了标题栏上的最小化和关闭按钮,则隐藏窗体。
  if (Msg.CmdType=SC_MINIMIZE) or (Msg.CmdType=SC_CLOSE) then
  begin
    Self.Hide;
  end else
  DefaultHandler(Msg); //这句的作用是继续处理其它消息;
end;
 
procedure  TForm1.WMCommand(var Message: TWMCommand);
begin     //第三种消息处理方式
if Message.NotifyCode = BN_CLICKED  then
if FindControl(Message.Ctl) = Button1 then showmessage(‘点击了Button1’);
inherited;
end;
 
procedure  TForm1.wmme(var message: TMessage);
begin
 ShowMessage(IntToStr(Handle)+ 'wmme'); //第一种消息处理方式
end;
 
procedure  TForm1.WndProc(var message: TMessage);
begin
   if message.Msg=WM_ME then //第二种消息处理方式
     ShowMessage(IntToStr(Handle)+ 'WndProc');
 inherited WndProc(Message); //这里inherited才会触发一次wmme消息;
end;
end.
 
实例2/////////////////////////////////////////////////////////////消息的广播方式/////////////////////////////////////////////////////////////////////////////
///////消息广播只能将消息传递到接收消息的主程序中,MDIChild窗体不能接收到广播消息;/////////
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 private
    { Private declarations }
 public
    { Public declarations }
    procedure WndProc(var message:TMessage);override;
 end;
var
 Form1: TForm1;
 MyMessage: DWORD;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.WndProc(var message: TMessage);
begin
 if message.Msg=MyMessage then //第3步:重载Windows消息处理过程,处理接收到的MyMessage消息;
 ShowMessage(FloatToStr(Handle)+ 'MyMessage');
 inherited WndProc(Message);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 SendMessage(HWND_BROADCAST,MyMessage,0,0); //第2步:广播MyMessage消息;
end;
/////////预先注册好Windows消息;第一种方法////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
 //同一字符串,如'MyMessageMe'在不同的程序中调用RegisterWindowMessage注册消息时,返回的MyMessage结果是一样的。这样为在不同程序之间广播消息提供了可能。即不同程序注册消息时,必须注册相同的注符串。
    MyMessage:=RegisterWindowMessage('MyMessageMe'); //第1步:注册Windows消息,重点在于返回的值MyMessage
end;
/////////预先注册好Windows消息;第二种方法////////////////////
{ initialization
 MyMessage:=RegisterWindowMessage('MyMessageMe');
}
 
 
//BroadcastSystemMessage,可以在进程之间广播消息;
procedure TForm1.SendSMSMessage;
var
  SMSMessage:Cardinal;
  recipt:Cardinal;
begin
 try
  SMSMessage:=RegisterWindowMessage('SendSMSMessage');
  recipt:=BSM_ALLDESKTOPS; //所以桌面程序都可以接收
  BroadcastSystemMessage(BSF_POSTMESSAGE,@recipt,SMSMessage,0,0);
 except
 end;
end;
 
end.

delphi中Message消息的使用方法的更多相关文章

  1. Delphi中Message消息的三种使用方法(覆盖WndProc,覆盖消息函数,改写WMCommand)

    实例1 unit Unit1; interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Fo ...

  2. delphi中Time消息的使用方法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  4. Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good

    Windows是一个基于消息驱动的系统,因此,在很多时候,我们需要截获一些消息然后自己进行处理.而VCL系统又有一些特定的消息.下面对我所了解的delphi环境中截获消息进行一些总结.      就个 ...

  5. Delphi中window消息截获的实现方式(2)

    Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具.由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpascal)语言,并有强大的数据库引擎 ...

  6. Delphi中的消息 (转载)

    消息是Windows发出的一个通知,它告诉应用程序某个事件发生了.在Delphi中,大多数情况下Windows的消息被封装在VCL的事件中,我们只需处理相应的VCL事件就可以了,但如果我们需要编写自己 ...

  7. Delphi中文件流的使用方法

    在Delphi中,所有流对象的基类为TStream类, 其中定义了所有流的共同属性和方法.TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中数据大小. 2.Position: ...

  8. delphi中使用自定义资源的方法

    如果要在delphi中使用自定义资源文件*.res文件,比如一个光标,此时可以采用下列步骤: 1,创建包含相应的资源文件,这里是创建一个包含自定义光标的res文件. 2,在主窗体的pas文件中加入编译 ...

  9. Floodlight 中创建消息对象的方法

            在 floodlight 中创建各种openflow message 和 action 等採用的是简单工厂方式.BasicFactory类(实现OFMessageFactory接口.) ...

随机推荐

  1. 引入git flow分支管理

    git flow是Vincent Driessen提出了一个分支管理的策略,非常值得借鉴.它可以使得版本库的演进保持简洁,主干清晰,各个分支各司其职.井井有条. 先看下Vincent Driessen ...

  2. OC面向对象—多态

    OC面向对象—多态 一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. ...

  3. mssqlserver 分日志(日志文件过大)

    ALTER DATABASE HexStudyDB3Reader SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE HexStudyDB3Reader S ...

  4. 为什么高手离不了Linux系统?这就是我的理由

    摘要: 通过本文来记录下我在Linux系统的学习经历,聊聊我为什么离不了Linuxx系统,同时也为那些想要尝试Linux而又有所顾忌的用户答疑解惑,下面将为你介绍我所喜欢的Linux系统,这里有一些你 ...

  5. hadoop运行原理之Job运行(三) TaskTracker的启动及初始化

    与JobTracker一样,TaskTracker也有main()方法,然后以线程的方式启动(继承了Runnable接口).main()方法中主要包含两步:一是创建一个TaskTracker对象:二是 ...

  6. Android Performance Optimization

    1.zipalign 2.ui优化 3.package size 4.RenderScript 5.Resource Shrinking & Code Shrinking 6.java cod ...

  7. 【转】LokiJS:纯JavaScript实现的轻量级数据库

    原文转自:http://www.html5cn.org/article-7091-1.html LokiJS一个轻量级的面向文档的数据库,由JavaScript实现,性能高于一切.目的是把JavaSc ...

  8. LINUX下如何开启FTP服务器

    1.首先应开启linuxh环境下的FTP service,过程如下:   http://www.witech.com.cn/news/Article_Show.asp?ArticleID=48    ...

  9. 第二个Sprint冲刺团队贡献分

    201306114322 邵家文 50分 201306114319 陈俊金 10分 201306114320 李新    10分 201306114324 朱浩龙 10分

  10. C++嵌入Python,以及两者混用

    以前项目中是C++嵌入Python,开发起来很便利,逻辑业务可以放到python中进行开发,容易修改,以及功能扩展.不过自己没有详细的研究过C++嵌入python的细节,这次详细的研究一下.首先我们简 ...