- 浏览: 59264 次
- 性别:
- 来自: 苏州
文章分类
最新评论
delphi中Message消息的使用方法
实例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 thenshowmessage(‘点击了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 中的MessageDlg
2011-12-21 08:37 916delphi 中的MessageDlg if M ... -
WinAPI: DrawText - 将文本绘制到指定的矩形中
2011-12-19 11:56 874//声明:DrawText( hDC: HDC; ... -
WinAPI: DrawFrameControl - 绘制控件
2011-12-19 11:55 1028//声明:DrawFrameControl( DC: HDC ... -
Delphi判断字符串是否是数字、字母、大小写字母
2011-10-27 09:35 1291function IsNumberic(Vaule:Strin ... -
delphi函数
2011-10-27 12:11 685函数由一句或多句代码 ... -
在Delphi中静态调用DLL 引用外部Dll External Dll 导入Dll
2011-10-27 12:15 859在Delphi中静态调用DLL 引用外部Dll Externa ... -
Delphi Format函数用法
2011-10-27 12:15 1644Delphi_Format函数用法 function Fo ... -
delphi6 函数大全使用详解
2011-10-27 12:18 1011delphi6 函数大全使用详解<<Delp ... -
Delphi 中串口通讯的实现
2011-10-27 12:19 699Delphi 中串口通讯的实现 Delphi 是新一代可 ... -
Delphi New,Getmem,ReallocMem联系与区别
2011-10-31 16:49 882procedure New(var P: Pointer) ... -
Delphi中ExtractFilePath()及其相近函数用法
2011-11-23 09:59 667Delphi中ExtractFilePath()及其相近函 ... -
Application.ProcessMessages
2011-11-30 15:56 592//如果有这样一个循环, 是非常可怕的; 因为它完不了, 你得 ...
相关推荐
1. 演示System.Messaging....3. 演示Delphi自带的对象Dispatch消息机制 4. 实现了传递记录体的消息机制 5. 演示了System.Messaging.TMessageManager的广播机制 6. 包含全部源代码,彻底理解Delphi的消息机制
POSTMESSAGE后台模拟按键源码,可以POSTMESSAGE按键消息到其他程序中
在应用程序层处处理消息,重载WndProc方法,在窗口过程处处理消息,重载缺省的消息处理过程,提示一下:消息发送方法的数组,SendPostString[0]是 Send消息, SendPostString[1]是Post消息,在程序中是以判断消息结构...
delphi的一些东西,希望能对人有用。
Delphi捕获与截获消息, private { Private declarations } //在应用程序层处处理消息 procedure OnAppmessage(var msg:TMsg;var handled:boolean); //重载WndProc方法,在窗口过程处处理消息 procedure...
消息发送方法的数组,SendPostString[0]是 Send消息, SendPostString[1]是Post消息,在程序中是以判断消息结构的 wParam字段来得到索引值的。SendMessage 时将wParam置为0,PostMessage 时将wParam置为1。
敝人近期整理的客户端与服务端通信实例,数据编码约定采用UTF-8编码,解决中文乱码问题.ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的...
delphi 消息发送 SendMsg(AddrBox.Text,'',MessageHeader.Text+mesText.Text);
delphi对话框生成器
3. 演示Delphi自带的对象Dispatch消息机制 4. 实现了传递记录体的消息机制 5. 演示了System.Messaging.TMessageManager的广播机制 6. 源代码下载地址:https://download.csdn.net/download/sensor_WU/85056340
2.15.1 使用Delphi的包 56 2.15.2 包的语法 56 2.16 面向对象编程 57 2.17 使用Delphi对象 58 2.17.1 声明和实例化 58 2.17.2 析构 59 2.18 方法 59 2.18.1 方法的类型 60 2.18.2 属性 61 2.18.3 可见性表示符 62 ...
只有在应用程序消息队列中出现一个新消息时,WaitMessage函数才放弃对其他应用程序的控制。参数Done为False时,即使应用程序不忙,也不放弃对其他应用程序的控制。 当应用程序转移到空闲状态时,只调用一次OnIdle...
Delphi7.0中messagelag控件的使用,简单的示例程序
Delphi演示失去焦点的Edit控件,文字框在失去焦点后应该怎么办,Delphi7源码下载。 procedure Register;//在IDE中进行注册 begin RegisterComponents('Samples',[Tmyedit]); //注册到Samples页中,控件名是...
Message Queue(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,网上有关Delphi下使用MSMQ的文章很少,这里把平时封装的MSMQ接收类和发送类提供给大家参考,是基于MSMQ消息事件模型的,带有...
Delphi 程序控制关闭显示器,不过我很好奇Delphi真能关闭显示器么?如果是用Delphi截断视频信号的输出,让显示器黑屏,这倒是有可能哦,但是让Delphi直接关闭显示器,有点不太可能吧?看了看代码,原来是这样: ...
示例用Delphi的Indy控件,试过用163或139邮箱发送,可以用普通端口25或SSL端口发送,可以发送附件。 内含2002年的ssleay32.dll和libeay32.dll,其它版本可能会报错“Could not load SSL library”。 smtp.163.com ...
Delphi打开关闭外部程序,并获取系统菜单句柄,把程序自身菜单加入到Windows菜单中,要解决这个问题,有两个工作要做: Ⅰ:如何把用户菜单项加入系统菜单, Ⅱ:如何才能响应这一菜单项。 解决问题Ⅰ:首先...
这个程序用到了网上的两个控件,一个是xpmenu,另一个是SReport6(for delphi6) 关于这两个控件的安装,相信大家都会,不过spreport6我在安装的时候发生了点问题...您盯delphi的message消息框,相信不会有太大问题:)
11.1.2 在Delphi程序中使用多线程 304 11.1.3 关于线程的滥用 305 11.2 TThread对象 305 11.2.1 TThread基础 305 11.2.2 TThread实例 307 11.2.3 线程的终止 307 11.2.4 与VCL同步 308 11.2.5 一个演示程序 310 ...